1010
1111from backend .core import path_conf
1212from backend .core .conf import settings
13+ from backend .core .path_conf import LOG_DIR
14+ from backend .utils .timezone import timezone
1315
1416
1517class InterceptHandler (logging .Handler ):
@@ -58,11 +60,11 @@ def setup_logging() -> None:
5860 # Debug log handlers
5961 # logging.debug(f'{logging.getLogger(name)}, {logging.getLogger(name).propagate}')
6062
61- # 定义 correlation_id 默认过滤函数
63+ # correlation_id 过滤器
6264 # https://github.com/snok/asgi-correlation-id/issues/7
6365 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 ]
66+ cid = correlation_id .get (settings .TRACE_ID_LOG_DEFAULT_VALUE )
67+ record ['correlation_id' ] = cid [: settings .TRACE_ID_LOG_UUID_LENGTH ]
6668 return record
6769
6870 # 配置 loguru 处理器
@@ -81,13 +83,20 @@ def correlation_id_filter(record):
8183
8284def set_custom_logfile () -> None :
8385 """设置自定义日志文件"""
84- log_path = path_conf .LOG_DIR
85- if not os .path .exists (log_path ):
86- os .mkdir (log_path )
86+ if not os .path .exists (LOG_DIR ):
87+ os .mkdir (LOG_DIR )
8788
8889 # 日志文件
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 )
90+ log_access_file = os .path .join (LOG_DIR , settings .LOG_ACCESS_FILENAME )
91+ log_error_file = os .path .join (LOG_DIR , settings .LOG_ERROR_FILENAME )
92+
93+ # 日志压缩回调
94+ def compression (filepath ):
95+ filename = filepath .split (os .sep )[- 1 ]
96+ original_filename = filename .split ('.' )[0 ]
97+ if '-' in original_filename :
98+ return os .path .join (LOG_DIR , f'{ original_filename } .log' )
99+ return os .path .join (LOG_DIR , f'{ original_filename } _{ timezone .now ().strftime ("%Y-%m-%d" )} .log' )
91100
92101 # 日志文件通用配置
93102 # https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
@@ -96,7 +105,7 @@ def set_custom_logfile() -> None:
96105 'enqueue' : True ,
97106 'rotation' : '00:00' ,
98107 'retention' : '7 days' ,
99- 'compression' : 'tar.gz' ,
108+ 'compression' : lambda filepath : os . rename ( filepath , compression ( filepath )) ,
100109 }
101110
102111 # 标准输出文件
0 commit comments