# 记录日志 defrun(): logger.debug("模块 A 的调试信息") logger.info("模块 A 的普通信息") logger.warning("模块 A 的警告信息") logger.error("模块 A 的错误信息") logger.critical("模块 A 的严重错误信息")
8. 模块 B:module_b.py
在模块 B 中,我们同样调用 setup_logger 函数来配置日志记录器,并记录日志。
1 2 3 4 5 6 7 8 9 10 11 12
from logger_config import setup_logger
# 配置模块 B 的日志记录器 logger = setup_logger("module_b")
# 记录日志 defrun(): logger.debug("模块 B 的调试信息") logger.info("模块 B 的普通信息") logger.warning("模块 B 的警告信息") logger.error("模块 B 的错误信息") logger.critical("模块 B 的严重错误信息")
9. 运行结果
控制台输出
1 2 3 4 5 6 7 8 9 10
2023-10-0112:00:00 | INFO | main:main:10 - 主模块启动 2023-10-0112:00:00 | INFO | module_a:run:6 - 模块 A 的普通信息 2023-10-0112:00:00 | WARNING | module_a:run:8 - 模块 A 的警告信息 2023-10-0112:00:00 | ERROR | module_a:run:10 - 模块 A 的错误信息 2023-10-0112:00:00 | CRITICAL | module_a:run:12 - 模块 A 的严重错误信息 2023-10-0112:00:00 | INFO | module_b:run:6 - 模块 B 的普通信息 2023-10-0112:00:00 | WARNING | module_b:run:8 - 模块 B 的警告信息 2023-10-0112:00:00 | ERROR | module_b:run:10 - 模块 B 的错误信息 2023-10-0112:00:00 | CRITICAL | module_b:run:12 - 模块 B 的严重错误信息 2023-10-0112:00:00 | INFO | main:main:14 - 主模块结束
日志文件内容
logs/app.log(主模块日志):
1 2
2023-10-0112:00:00 | INFO | main:main:10 - 主模块启动 2023-10-0112:00:00 | INFO | main:main:14 - 主模块结束
logs/module_a.log(模块 A 日志):
1 2 3 4 5
2023-10-0112:00:00 | DEBUG | module_a:run:4 - 模块 A 的调试信息 2023-10-0112:00:00 | INFO | module_a:run:6 - 模块 A 的普通信息 2023-10-0112:00:00 | WARNING | module_a:run:8 - 模块 A 的警告信息 2023-10-0112:00:00 | ERROR | module_a:run:10 - 模块 A 的错误信息 2023-10-0112:00:00 | CRITICAL | module_a:run:12 - 模块 A 的严重错误信息
logs/module_b.log(模块 B 日志):
1 2 3 4 5
2023-10-0112:00:00 | DEBUG | module_b:run:4 - 模块 B 的调试信息 2023-10-0112:00:00 | INFO | module_b:run:6 - 模块 B 的普通信息 2023-10-0112:00:00 | WARNING | module_b:run:8 - 模块 B 的警告信息 2023-10-0112:00:00 | ERROR | module_b:run:10 - 模块 B 的错误信息 2023-10-0112:00:00 | CRITICAL | module_b:run:12 - 模块 B 的严重错误信息
10. 总结
通过统一的日志配置函数 setup_logger,我们实现了以下目标:
自动生成日志文件名:根据模块名称动态生成日志文件名,避免手动指定文件名。
减少重复代码:在每个模块中只需调用 setup_logger 函数,无需重复编写日志配置代码。
灵活的日志管理:每个模块的日志存储在独立的文件中,便于管理和分析。
日志轮转:通过 loguru 的日志轮转功能,自动管理日志文件的大小和数量。
日志级别控制:在开发环境中使用 DEBUG 级别,在生产环境中使用 INFO 或 WARNING 级别。