Make td::Log thread-safe.
GitOrigin-RevId: d1942c9b5ff72ea6ae100a0b4b65f1371f8ee534
This commit is contained in:
parent
642f5ed81a
commit
6a2cb7a466
@ -11,8 +11,11 @@
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/Slice.h"
|
||||
|
||||
#include <mutex>
|
||||
|
||||
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<std::mutex> 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<std::mutex> lock(log_mutex);
|
||||
max_log_file_size = max(max_file_size, static_cast<int64>(0));
|
||||
file_log.set_rotate_threshold(max_log_file_size);
|
||||
}
|
||||
|
||||
void Log::set_verbosity_level(int new_verbosity_level) {
|
||||
std::lock_guard<std::mutex> 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<std::mutex> lock(log_mutex);
|
||||
if (callback == nullptr) {
|
||||
fatal_error_callback = nullptr;
|
||||
set_log_fatal_error_callback(nullptr);
|
||||
|
Reference in New Issue
Block a user