羽梦羽笔记MENGYU NOTES
笔记/Python
Python

让脚本留下线索:一份实用的日志思路

区分运行状态、异常和处理结果,让下一次排查不必从猜测开始。

临时脚本里的一句 print 很方便,但当脚本开始反复运行,仅仅看到“执行结束”已经不够。需要知道它何时开始、处理了多少条记录、在哪一步停止,以及哪些结果需要人工查看。

日志围绕事件来写

一条日志最好表达一个明确事件,例如“输入文件读取完成”“跳过重复记录”或“目标文件已存在”。尽量带上可用于定位的任务编号、文件名和数量,但不要把整份敏感数据写进日志。

import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s",
)
logger = logging.getLogger(__name__)

def inspect_rows(rows):
    logger.info("开始检查,记录数=%s", len(rows))
    missing = sum(not row.get("title") for row in rows)
    logger.info("检查完成,缺少标题=%s", missing)
    return missing

等级表达处理的紧急程度

可以用 INFO 记录正常阶段,用 WARNING 记录可继续但值得关注的情况,用 ERROR 记录本次操作失败。等级应当服务于排查,避免所有消息都标成错误,也避免关键失败只出现在调试信息中。

异常需要上下文

捕获异常时,说明正在处理什么任务。在合适的异常处理块中使用 logger.exception,可以保留异常堆栈。不要为了让脚本“继续跑”而吞掉所有错误;无法保证结果正确时,应停止相关操作。

最后给出汇总

结束时记录成功、跳过和失败的数量,并保留失败项的定位方式。长时间运行的脚本还需要控制日志文件大小与保留期限。日志足够解释过程即可,没必要复制所有输入输出。

✳

记录方法,也保留问题。
本文属于「Python」专题。

继续阅读专题 →
← 全部笔记下一篇:哪些事情,值得先做成自动化? →

搜索覆盖文章正文 · Esc 关闭