88from asgi_correlation_id import correlation_id
99from loguru import logger
1010
11- from backend .core import path_conf
1211from backend .core .conf import settings
12+ from backend .core .path_conf import LOG_DIR
13+ from backend .utils .timezone import timezone
1314
1415
1516class InterceptHandler (logging .Handler ):
@@ -58,11 +59,11 @@ def setup_logging() -> None:
5859 # Debug log handlers
5960 # logging.debug(f'{logging.getLogger(name)}, {logging.getLogger(name).propagate}')
6061
61- # 定义 correlation_id 默认过滤函数
62+ # correlation_id 过滤器
6263 # https://github.com/snok/asgi-correlation-id/issues/7
6364 def correlation_id_filter (record ):
64- cid = correlation_id .get (settings .LOG_CID_DEFAULT_VALUE )
65- record ['correlation_id' ] = cid [: settings .LOG_CID_UUID_LENGTH ]
65+ cid = correlation_id .get (settings .TRACE_ID_LOG_DEFAULT_VALUE )
66+ record ['correlation_id' ] = cid [: settings .TRACE_ID_LOG_UUID_LENGTH ]
6667 return record
6768
6869 # 配置 loguru 处理器
@@ -81,13 +82,20 @@ def correlation_id_filter(record):
8182
8283def set_custom_logfile () -> None :
8384 """设置自定义日志文件"""
84- log_path = path_conf .LOG_DIR
85- if not os .path .exists (log_path ):
86- os .mkdir (log_path )
85+ if not os .path .exists (LOG_DIR ):
86+ os .mkdir (LOG_DIR )
8787
8888 # 日志文件
89- log_access_file = os .path .join (log_path , settings .LOG_ACCESS_FILENAME )
90- log_error_file = os .path .join (log_path , settings .LOG_ERROR_FILENAME )
89+ log_access_file = os .path .join (LOG_DIR , settings .LOG_ACCESS_FILENAME )
90+ log_error_file = os .path .join (LOG_DIR , settings .LOG_ERROR_FILENAME )
91+
92+ # 日志压缩回调
93+ def compression (filepath ):
94+ filename = filepath .split (os .sep )[- 1 ]
95+ original_filename = filename .split ('.' )[0 ]
96+ if '-' in original_filename :
97+ return os .path .join (LOG_DIR , f'{ original_filename } .log' )
98+ return os .path .join (LOG_DIR , f'{ original_filename } _{ timezone .now ().strftime ("%Y-%m-%d" )} .log' )
9199
92100 # 日志文件通用配置
93101 # https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
@@ -96,7 +104,7 @@ def set_custom_logfile() -> None:
96104 'enqueue' : True ,
97105 'rotation' : '00:00' ,
98106 'retention' : '7 days' ,
99- 'compression' : 'tar.gz' ,
107+ 'compression' : lambda filepath : os . rename ( filepath , compression ( filepath )) ,
100108 }
101109
102110 # 标准输出文件
0 commit comments