@@ -32,25 +32,28 @@ namespace td {
32
32
33
33
LogOptions log_options;
34
34
35
- static std::atomic<int > max_callback_verbosity_level = 0 ;
36
- static std::atomic<OnLogMessageCallback> on_log_message_callback = nullptr ;
35
+ static std::atomic<int > max_callback_verbosity_level{- 2 } ;
36
+ static std::atomic<OnLogMessageCallback> on_log_message_callback{ nullptr } ;
37
37
38
38
void set_log_message_callback (int max_verbosity_level, OnLogMessageCallback callback) {
39
+ if (callback == nullptr ) {
40
+ max_verbosity_level = -2 ;
41
+ }
42
+
39
43
max_callback_verbosity_level = max_verbosity_level;
40
44
on_log_message_callback = callback;
41
45
}
42
46
43
47
void LogInterface::append (int log_level, CSlice slice) {
44
48
do_append (log_level, slice);
45
- if (log_level <= max_callback_verbosity_level.load (std::memory_order_relaxed)) {
49
+ if (log_level == VERBOSITY_NAME (FATAL)) {
50
+ process_fatal_error (slice);
51
+ } else if (log_level <= max_callback_verbosity_level.load (std::memory_order_relaxed)) {
46
52
auto callback = on_log_message_callback.load (std::memory_order_relaxed);
47
53
if (callback != nullptr ) {
48
54
callback (log_level, slice);
49
55
}
50
56
}
51
- if (log_level == VERBOSITY_NAME (FATAL)) {
52
- process_fatal_error (slice);
53
- }
54
57
}
55
58
56
59
TD_THREAD_LOCAL const char *Logger::tag_ = nullptr ;
@@ -286,17 +289,14 @@ static DefaultLog default_log;
286
289
LogInterface *const default_log_interface = &default_log;
287
290
LogInterface *log_interface = default_log_interface;
288
291
289
- static OnFatalErrorCallback on_fatal_error_callback = nullptr ;
290
-
291
- void set_log_fatal_error_callback (OnFatalErrorCallback callback) {
292
- on_fatal_error_callback = callback;
293
- }
294
-
295
292
void process_fatal_error (CSlice message) {
296
- auto callback = on_fatal_error_callback;
297
- if (callback) {
298
- callback (message);
293
+ if (0 <= max_callback_verbosity_level.load (std::memory_order_relaxed)) {
294
+ auto callback = on_log_message_callback.load (std::memory_order_relaxed);
295
+ if (callback != nullptr ) {
296
+ callback (0 , message);
297
+ }
299
298
}
299
+
300
300
std::abort ();
301
301
}
302
302
0 commit comments