58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#include "logger.h"
|
|
|
|
#include <chrono>
|
|
#include <iostream>
|
|
|
|
namespace {
|
|
|
|
std::string current_datetime_string()
|
|
{
|
|
auto now = std::chrono::system_clock::now();
|
|
auto now_time_t = std::chrono::system_clock::to_time_t(now);
|
|
struct tm now_tm {};
|
|
#ifdef _WIN32
|
|
localtime_s(&now_tm, &now_time_t);
|
|
#else
|
|
localtime_r(&now_time_t, &now_tm);
|
|
#endif
|
|
|
|
char buffer[30];
|
|
std::strftime(buffer, sizeof(buffer) / sizeof(char), "%Y-%m-%d %H:%M:%S",
|
|
&now_tm);
|
|
return std::string{buffer};
|
|
}
|
|
|
|
} // namespace
|
|
|
|
void Logger::info(const std::string& message)
|
|
{
|
|
LogEntry entry;
|
|
entry.type = LogType::info;
|
|
entry.message =
|
|
"[" + current_datetime_string() + "] [INFO]: " + message;
|
|
|
|
std::cout << "\x1B[32m" << entry.message << "\033[0m" << std::endl;
|
|
messages_.push_back(entry);
|
|
}
|
|
|
|
void Logger::warn(const std::string& message)
|
|
{
|
|
LogEntry entry;
|
|
entry.type = LogType::warn;
|
|
entry.message =
|
|
"[" + current_datetime_string() + "] [WARN]: " + message;
|
|
|
|
std::cout << "\x1B[93m" << entry.message << "\033[0m" << std::endl;
|
|
messages_.push_back(entry);
|
|
}
|
|
|
|
void Logger::error(const std::string& message)
|
|
{
|
|
LogEntry entry;
|
|
entry.type = LogType::error;
|
|
entry.message = "[" + current_datetime_string() + "] [ERROR]: " + message;
|
|
|
|
std::cerr << "\x1B[91m" << entry.message << "\033[0m" << std::endl;
|
|
messages_.push_back(entry);
|
|
}
|