From 6a2cb7a4663019ee64d92288236008e940318587 Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 1 Sep 2018 22:44:20 +0300 Subject: [PATCH] Make td::Log thread-safe. GitOrigin-RevId: d1942c9b5ff72ea6ae100a0b4b65f1371f8ee534 --- td/telegram/Log.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/td/telegram/Log.cpp b/td/telegram/Log.cpp index 230aab13..b712b821 100644 --- a/td/telegram/Log.cpp +++ b/td/telegram/Log.cpp @@ -11,8 +11,11 @@ #include "td/utils/logging.h" #include "td/utils/Slice.h" +#include + namespace td { +static std::mutex log_mutex; static FileLog file_log; static TsLog ts_log(&file_log); static int64 max_log_file_size = 10 << 20; @@ -24,6 +27,7 @@ static void fatal_error_callback_wrapper(CSlice message) { } bool Log::set_file_path(string file_path) { + std::lock_guard lock(log_mutex); if (file_path.empty()) { log_interface = default_log_interface; return true; @@ -38,17 +42,20 @@ bool Log::set_file_path(string file_path) { } void Log::set_max_file_size(int64 max_file_size) { + std::lock_guard lock(log_mutex); max_log_file_size = max(max_file_size, static_cast(0)); file_log.set_rotate_threshold(max_log_file_size); } void Log::set_verbosity_level(int new_verbosity_level) { + std::lock_guard lock(log_mutex); if (0 <= new_verbosity_level && new_verbosity_level <= 1024) { SET_VERBOSITY_LEVEL(VERBOSITY_NAME(FATAL) + new_verbosity_level); } } void Log::set_fatal_error_callback(FatalErrorCallbackPtr callback) { + std::lock_guard lock(log_mutex); if (callback == nullptr) { fatal_error_callback = nullptr; set_log_fatal_error_callback(nullptr);