61 lines
1.3 KiB
C++
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";
|
|
}
|
|
}
|
|
|
|
}
|