|
|
|
@ -115,10 +115,30 @@ class StructuredLogger: |
|
|
|
if not os.path.exists(logs_dir): |
|
|
|
os.makedirs(logs_dir, exist_ok=True) |
|
|
|
|
|
|
|
# 文件处理器 |
|
|
|
file_handler = logging.FileHandler(f"logs/{self.name}.log", encoding='utf-8') |
|
|
|
file_handler.setFormatter(StructuredFormatter(include_stack_trace=True)) |
|
|
|
self.logger.addHandler(file_handler) |
|
|
|
# 创建过滤器来分离日志级别 |
|
|
|
class ErrorFilter(logging.Filter): |
|
|
|
def filter(self, record): |
|
|
|
return record.levelno >= logging.ERROR |
|
|
|
|
|
|
|
class NormalFilter(logging.Filter): |
|
|
|
def filter(self, record): |
|
|
|
return record.levelno < logging.ERROR |
|
|
|
|
|
|
|
# 异常日志处理器(ERROR和CRITICAL级别) |
|
|
|
error_handler = logging.FileHandler("logs/error.log", encoding='utf-8') |
|
|
|
error_handler.setLevel(logging.ERROR) |
|
|
|
error_handler.setFormatter(StructuredFormatter(include_stack_trace=True)) |
|
|
|
error_handler.addFilter(ErrorFilter()) |
|
|
|
|
|
|
|
# 正常日志处理器(DEBUG、INFO、WARNING级别) |
|
|
|
normal_handler = logging.FileHandler("logs/app.log", encoding='utf-8') |
|
|
|
normal_handler.setLevel(logging.DEBUG) |
|
|
|
normal_handler.setFormatter(StructuredFormatter(include_stack_trace=False)) |
|
|
|
normal_handler.addFilter(NormalFilter()) |
|
|
|
|
|
|
|
# 添加处理器 |
|
|
|
self.logger.addHandler(error_handler) |
|
|
|
self.logger.addHandler(normal_handler) |
|
|
|
|
|
|
|
def _log(self, level: LogLevel, message: str, **kwargs): |
|
|
|
"""通用日志方法""" |
|
|
|
|