tsl-devkit/lsp-server/src/lsp/logger.cpp

61 lines
1.3 KiB
C++

#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<std::mutex> lock(mutex_);
level_ = level;
}
void Logger::SetLogFile(const std::string& filename)
{
std::lock_guard<std::mutex> 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<std::mutex> 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";
}
}
}