Coverage for merco/observability/logger.py: 25%
16 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""日志系统"""
3import logging
4import sys
5from pathlib import Path
8def setup_logger(
9 name: str = "merco",
10 level: str = "INFO",
11 log_file: str = None,
12) -> logging.Logger:
13 """配置并返回日志记录器"""
14 logger = logging.getLogger(name)
15 logger.setLevel(getattr(logging, level.upper(), logging.INFO))
17 # 控制台输出
18 console_handler = logging.StreamHandler(sys.stdout)
19 console_handler.setFormatter(
20 logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")
21 )
22 logger.addHandler(console_handler)
24 # 文件输出
25 if log_file:
26 log_path = Path(log_file)
27 log_path.parent.mkdir(parents=True, exist_ok=True)
28 file_handler = logging.FileHandler(log_path)
29 file_handler.setFormatter(
30 logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")
31 )
32 logger.addHandler(file_handler)
34 return logger