Python日志分级教程_debuginfoerror设计

11次阅读

python日志五级需严格按语义使用:debug用于开发调试细节,info记录正常运行关键节点,warning提示潜在风险,Error表示可恢复的操作失败,critical标志服务不可用。

Python日志分级教程_debuginfoerror设计

Python 日志分级不是随便设几个 level 就完事,关键在 debug/info/warning/error/critical 这五级怎么用才不混乱、不遗漏、不误判。核心原则是:每级有明确语义,不同场景对应不同级别,且要配合 handler 和 formatter 才真正生效。

debug 级别:只给开发者看的“显微镜”

debug 是最低级别,用于输出详细执行路径、变量快照、函数入参/返回值等临时诊断信息。生产环境默认关闭,开发或调试时开启。

  • 适合写:f”进入函数 {func_name},参数为 {args}”f”数据库查询耗时 {elapsed:.2f}s”
  • 不适合写:“用户登录失败”(这是 error)、“配置加载完成”(这是 info)
  • 启用方式:Logging.basicConfig(level=logging.DEBUG) 或在 logger 上调用 setLevel(logging.DEBUG)

info 级别:系统正常运行的“记事本”

info 表示程序按预期工作的重要节点,是运维和业务方最常查看的级别。它不反映问题,但能回答“发生了什么”“走到哪一步了”。

  • 适合写:“服务启动成功,监听 0.0.0.0:8000”“订单 #12345 已创建并写入数据库”
  • 避免泛滥:“进入 for 循环 或每行都 log,会淹没关键信息
  • 建议搭配结构化字段:logger.info("user_registered", user_id=uid, ip=request.ip)(需用支持结构化的 handler,如 json logging)

warning 级别:潜在风险的“黄灯”

warning 不代表错误,而是提示“可能出问题,但当前还能继续”。它常被低估,其实是最该主动设计的一级——帮团队提前发现隐患。

立即学习Python免费学习笔记(深入)”;

  • 典型场景:配置项缺失但用了默认值API 返回了非 2xx 状态码但已重试成功缓存命中率低于 80%
  • 不要降级为 info:“找不到配置文件,使用默认配置” → 应为 warning
  • 可触发告警:warning 出现频率超过阈值时,自动发钉钉/邮件

error 和 critical:必须响应的“红灯”

error 表示一个操作失败,但程序整体仍可运行(如单次支付请求超时);critical 表示整个服务已无法履行核心职责(如数据库连接全部断开、配置加载失败导致主逻辑不可用)。

  • error 示例:“调用第三方短信接口失败,http 503”“解析 jsON 失败,原始内容: {raw_data}”
  • critical 示例:“初始化 redis 客户端失败,退出主进程”“JWT 密钥未配置,鉴权模块失效”
  • 关键区别critical 通常伴随 exit() 或 panic 流程,error 则应有 fallback 或重试机制
text=ZqhQzanResources