#include "./logger.hpp" namespace lsp::log { Logger::~Logger() { if (file_stream_.is_open()) file_stream_.close(); } Logger& Logger::Instance() { static Logger logger; return logger; } void Logger::SetLevel(LogLevel level) { std::lock_guard lock(mutex_); level_ = level; } void Logger::SetLogFile(const std::string& filename) { std::lock_guard lock(mutex_); if (file_stream_.is_open()) file_stream_.close(); file_stream_.open(filename, std::ios::app); use_file_ = file_stream_.is_open(); } void Logger::EnableStderr(bool enable) { std::lock_guard lock(mutex_); use_stderr_ = enable; } const char* Logger::LevelToString(LogLevel level) { switch (level) { case LogLevel::kOff: return "OFF"; case LogLevel::kError: return "ERROR"; case LogLevel::kWarn: return "WARN"; case LogLevel::kInfo: return "INFO"; case LogLevel::kDebug: return "DEBUG"; case LogLevel::kVerbose: return "VERBOSE"; default: return "UNKNOWN"; } } }