Python自动化脚本日志监控需规范初始化、按模块创建独立Logger、实施轻量运行时监控并定期清理归档。统一在main.py配置logging,用TimedRotatingFileHandler按天轮转,格式含时间、模块名、行号、级别和消息;各模块用logging.getLogger(__name__)获取专属logger,关键操作打点、异常记录带exc_info=True;通过tail/grep查错、记录启动/退出时间、超时检测及ERROR频次告警实现基础监控;保留7天日志并可压缩归档,严禁print替代logger、混用级别或泄露敏感信息。

在Python自动化脚本项目中,日志监控不是“加个print就行”,而是要能记录关键行为、捕获异常、区分级别、方便排查,还能长期留存和快速检索。核心是用好logging模块,并搭配合理配置与轻量级监控手段。
一、规范初始化日志系统
避免在每个文件里重复写logging.basicConfig(),统一在主入口(如main.py)中配置一次。重点设好输出目标、格式、默认级别和编码:
- 日志写入文件(而非仅控制台),推荐按天轮转:
RotatingFileHandler或TimedRotatingFileHandler - 格式包含时间、模块名、行号、级别和消息,例如:
%(asctime)s [%(name)s:%(lineno)d] %(levelname)s - %(message)s - 设置
level=logging.INFO,调试时临时调为DEBUG;生产环境慎用WARNING以下级别,避免日志爆炸 - 文件编码指定
encoding='utf-8',防止中文乱码
二、按模块/功能创建独立Logger实例
不要全项目共用logging.getLogger()返回的root logger。每个模块应获取专属logger,便于分类过滤和定向调试:
- 在模块顶部写
logger = logging.getLogger(__name__),自动获得包路径名(如tasks.download) - 关键操作打点:任务开始/结束、API调用前后、数据处理前后的状态、重试次数等,用
logger.info()或logger.debug() - 异常必须捕获后记录:
logger.error("请求失败", exc_info=True),exc_info=True会打印完整堆栈
三、简单但有效的运行时监控手段
不依赖ELK或Prometheus也能做基础监控。适合中小项目:
立即学习“Python免费学习笔记(深入)”;
- 定期检查日志文件末尾:用
tail -n 50 app.log | grep ERROR(Linux/macOS)或PowerShell命令快速扫错 - 脚本启动时写一条
INFO日志标记启动时间;退出前写一条INFO记录运行时长和结果摘要 - 对关键定时任务,在日志中记录上一次成功执行时间,下次启动时比对是否超时(比如超过2小时没跑,可能进程挂了)
- 可加一行轻量逻辑:每100条日志统计一次
ERROR数量,超阈值时发邮件或写告警文件(用smtplib或本地touch alert.flag)
四、日志清理与归档建议
自动化脚本常长期运行,日志不清理会占满磁盘:
- 使用
TimedRotatingFileHandler按日切分,保留最近7天日志:backupCount=7 - 日志文件名含日期,如
app.2024-06-15.log,方便人工定位某天问题 - 若需压缩归档,可在每日切分后调用
shutil.make_archive()打包旧日志,再os.remove()原文件 - 避免在脚本里做复杂清理逻辑——用系统cron或Windows任务计划单独跑一个清理脚本更稳妥
基本上就这些。不复杂但容易忽略的是:日志级别别混用、别用print代替logger、别让日志内容含敏感信息(如密码、token)。做好这三点,日志就能真正成为你脚本的“黑匣子”。










