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