@@ -35,8 +35,12 @@ def build_module_string(selected_module):
35
35
36
36
37
37
def formatter (record ):
38
- """为没有 tag 的日志添加默认值"""
38
+ """为没有 tag 的日志添加默认值,并处理动态模块字符串 """
39
39
record ["extra" ].setdefault ("tag" , record ["name" ])
40
+ # 如果没有设置 selected_module,使用默认值
41
+ record ["extra" ].setdefault ("selected_module" , "00000000000000" )
42
+ # 将 selected_module 从 extra 提取到顶级,以支持 {selected_module} 格式
43
+ record ["selected_module" ] = record ["extra" ]["selected_module" ]
40
44
return record ["message" ]
41
45
42
46
@@ -49,11 +53,11 @@ def setup_logging():
49
53
50
54
# 第一次初始化时配置日志
51
55
if not _logger_initialized :
56
+ # 使用默认的模块字符串进行初始化
52
57
logger .configure (
53
58
extra = {
54
- "selected_module" : log_config .get ("selected_module" , "00000000000000" )
55
- }
56
- ) # 新增配置
59
+ "selected_module" : "00000000000000" })
60
+
57
61
log_format = log_config .get (
58
62
"log_format" ,
59
63
"<green>{time:YYMMDD HH:mm:ss}</green>[{version}_{extra[selected_module]}][<light-blue>{extra[tag]}</light-blue>]-<level>{level}</level>-<light-green>{message}</light-green>" ,
@@ -62,14 +66,8 @@ def setup_logging():
62
66
"log_format_file" ,
63
67
"{time:YYYY-MM-DD HH:mm:ss} - {version}_{extra[selected_module]} - {name} - {level} - {extra[tag]} - {message}" ,
64
68
)
65
- selected_module_str = logger ._core .extra ["selected_module" ]
66
-
67
69
log_format = log_format .replace ("{version}" , SERVER_VERSION )
68
- log_format = log_format .replace ("{selected_module}" , selected_module_str )
69
70
log_format_file = log_format_file .replace ("{version}" , SERVER_VERSION )
70
- log_format_file = log_format_file .replace (
71
- "{selected_module}" , selected_module_str
72
- )
73
71
74
72
log_level = log_config .get ("log_level" , "INFO" )
75
73
log_dir = log_config .get ("log_dir" , "tmp" )
@@ -108,66 +106,7 @@ def setup_logging():
108
106
return logger
109
107
110
108
111
- def update_module_string (selected_module_str ):
112
- """更新模块字符串并重新配置日志处理器"""
113
- logger .debug (f"更新日志配置组件" )
114
- current_module = logger ._core .extra ["selected_module" ]
115
-
116
- if current_module == selected_module_str :
117
- logger .debug (f"组件未更改无需更新" )
118
- return
119
-
120
- try :
121
- logger .configure (extra = {"selected_module" : selected_module_str })
122
-
123
- config = load_config ()
124
- log_config = config ["log" ]
125
-
126
- log_format = log_config .get (
127
- "log_format" ,
128
- "<green>{time:YYMMDD HH:mm:ss}</green>[{version}_{extra[selected_module]}][<light-blue>{extra[tag]}</light-blue>]-<level>{level}</level>-<light-green>{message}</light-green>" ,
129
- )
130
- log_format_file = log_config .get (
131
- "log_format_file" ,
132
- "{time:YYYY-MM-DD HH:mm:ss} - {version}_{extra[selected_module]} - {name} - {level} - {extra[tag]} - {message}" ,
133
- )
134
-
135
- log_format = log_format .replace ("{version}" , SERVER_VERSION )
136
- log_format = log_format .replace ("{selected_module}" , selected_module_str )
137
- log_format_file = log_format_file .replace ("{version}" , SERVER_VERSION )
138
- log_format_file = log_format_file .replace (
139
- "{selected_module}" , selected_module_str
140
- )
141
-
142
- logger .remove ()
143
- logger .add (
144
- sys .stdout ,
145
- format = log_format ,
146
- level = log_config .get ("log_level" , "INFO" ),
147
- filter = formatter ,
148
- )
149
-
150
- # 更新文件日志配置 - 统一目录,按大小轮转
151
- log_dir = log_config .get ("log_dir" , "tmp" )
152
- log_file = log_config .get ("log_file" , "server.log" )
153
-
154
- # 日志文件完整路径
155
- log_file_path = os .path .join (log_dir , log_file )
156
-
157
- logger .add (
158
- log_file_path ,
159
- format = log_format_file ,
160
- level = log_config .get ("log_level" , "INFO" ),
161
- filter = formatter ,
162
- rotation = "10 MB" , # 每个文件最大10MB
163
- retention = "30 days" , # 保留30天
164
- compression = None ,
165
- encoding = "utf-8" ,
166
- enqueue = True , # 异步安全
167
- backtrace = True ,
168
- diagnose = True ,
169
- )
109
+ def create_connection_logger (selected_module_str ):
110
+ """为连接创建独立的日志器,绑定特定的模块字符串"""
111
+ return logger .bind (selected_module = selected_module_str )
170
112
171
- except Exception as e :
172
- logger .error (f"日志配置更新失败: { str (e )} " )
173
- raise
0 commit comments