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

1"""日志系统""" 

2 

3import logging 

4import sys 

5from pathlib import Path 

6 

7 

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)) 

16 

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) 

23 

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) 

33 

34 return logger