-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLogger.cpp
More file actions
58 lines (48 loc) · 1.57 KB
/
Logger.cpp
File metadata and controls
58 lines (48 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <string>
#include <fstream>
#include <ctime>
#include <chrono>
#include <iomanip>
#include <sstream>
using namespace std;
class Logger {
public:
enum Level {
INFO,
WARNING,
ERR,
};
Logger(const string& filename) {
log_file.open(filename, ios::app); // Открытие файла для записи
}
~Logger() {
if (log_file.is_open()) {
log_file.close();
}
}
void log(Level level, const string& message) {
if (log_file.is_open()) {
log_file << getCurrentTime() << ",[" << levelToString(level) << "]," << message << endl;
}
}
private:
ofstream log_file;
string getCurrentTime() {
auto now = chrono::system_clock::now(); // Получаем текущее время
auto in_time_t = chrono::system_clock::to_time_t(now); // Преобразуем в time_t
tm localTime;
localtime_r(&in_time_t, &localTime); // Получаем локальное время для уровня потока
ostringstream oss; // Поток строки для формирования времени
oss << put_time(&localTime, "%Y-%m-%d %X"); // Форматируем время
return oss.str(); // Возвращаем строку с текущим временем
}
string levelToString(Level level) {
switch (level) {
case INFO: return "INFO";
case WARNING: return "WARNING";
case ERR: return "ERROR";
default: return "UNKNOWN";
}
}
};