implement locking properly with std::mutex and std::lock_guard<>
This commit is contained in:
parent
50594febc7
commit
88a4bb4d12
@ -43,8 +43,6 @@ enum LogLevel
|
||||
logWARNING,
|
||||
logDEBUG };
|
||||
|
||||
static std::mutex logger_mutex;
|
||||
|
||||
const char COL_RESET[] = "\x1b[0m";
|
||||
const char RED[] = "\x1b[31m";
|
||||
const char GREEN[] = "\x1b[32m";
|
||||
@ -80,11 +78,18 @@ class SimpleLogger
|
||||
public:
|
||||
SimpleLogger() : level(logINFO) {}
|
||||
|
||||
std::mutex& get_mutex()
|
||||
{
|
||||
static std::mutex m;
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
std::ostringstream &Write(LogLevel l = logINFO)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(get_mutex());
|
||||
try
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(logger_mutex);
|
||||
level = l;
|
||||
os << "[";
|
||||
switch (level)
|
||||
@ -112,6 +117,7 @@ class SimpleLogger
|
||||
|
||||
virtual ~SimpleLogger()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(get_mutex());
|
||||
if (!LogPolicy::GetInstance().IsMute())
|
||||
{
|
||||
const bool is_terminal = isatty(fileno(stdout));
|
||||
|
Loading…
Reference in New Issue
Block a user