@@ -33,6 +33,18 @@ def _setup_logfile() -> Path:
33
33
return logfile
34
34
35
35
36
+ class TraceIDFilter (logging .Filter ):
37
+ """add trace_id to the log record"""
38
+
39
+ def filter (self , record ):
40
+ try :
41
+ trace_id = get_current_trace_id ()
42
+ record .trace_id = trace_id if trace_id else "no-trace-id"
43
+ except Exception :
44
+ record .trace_id = "no-trace-id"
45
+ return True
46
+
47
+
36
48
class CustomLoggerRequestHandler (logging .Handler ):
37
49
_instance = None
38
50
_lock = threading .Lock ()
@@ -123,22 +135,23 @@ def close(self):
123
135
"disable_existing_loggers" : False ,
124
136
"formatters" : {
125
137
"standard" : {
126
- "format" : "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
138
+ "format" : "%(asctime)s [%(trace_id)s] - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
127
139
},
128
140
"no_datetime" : {
129
- "format" : "%(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
141
+ "format" : "[%(trace_id)s] - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
130
142
},
131
143
},
132
144
"filters" : {
133
- "package_tree_filter" : {"()" : "logging.Filter" , "name" : settings .LOG_FILTER_TREE_PREFIX }
145
+ "package_tree_filter" : {"()" : "logging.Filter" , "name" : settings .LOG_FILTER_TREE_PREFIX },
146
+ "trace_id_filter" : {"()" : "memos.log.TraceIDFilter" },
134
147
},
135
148
"handlers" : {
136
149
"console" : {
137
150
"level" : selected_log_level ,
138
151
"class" : "logging.StreamHandler" ,
139
152
"stream" : stdout ,
140
153
"formatter" : "no_datetime" ,
141
- "filters" : ["package_tree_filter" ],
154
+ "filters" : ["package_tree_filter" , "trace_id_filter" ],
142
155
},
143
156
"file" : {
144
157
"level" : "DEBUG" ,
@@ -147,6 +160,7 @@ def close(self):
147
160
"maxBytes" : 1024 ** 2 * 10 ,
148
161
"backupCount" : 10 ,
149
162
"formatter" : "standard" ,
163
+ "filters" : ["trace_id_filter" ],
150
164
},
151
165
},
152
166
"root" : { # Root logger handles all logs
0 commit comments