Python logging 的核心是解耦日志产生与处理,通过 Logger、Handler、Formatter、Filter 分离职责,支持分层继承、多通道输出、动态调级和配置驱动。

Python logging 的核心设计思想是解耦日志的产生与处理,让开发者能灵活控制“记什么”(what)、“记到哪”(where)、“怎么记”(how)和“记不记”(whether)——这四个维度彼此独立、可自由组合。
分层结构:Logger 作为日志入口
Logger 是应用程序中实际调用 .debug()、.info() 等方法的对象。它不负责输出,只负责收集日志事件、判断是否应该传播(基于 level 和 propagate 设置),并把日志记录(LogRecord)逐级交给 Handler 处理。这种设计支持父子 Logger 继承关系(如 app 和 app.database),便于按模块精细控制日志行为。
职责分离:Handler、Formatter、Filter 各司其职
Handler 决定日志去向:比如写入文件、发到网络、打印到终端;Formatter 控制输出格式:定义时间、模块名、级别、消息体等如何拼接成字符串;Filter 提供额外过滤逻辑:比如只让特定用户 ID 的请求日志通过。三者可任意搭配,互不影响。
- 一个 Logger 可添加多个 Handler(如同时写文件 + 推送告警)
- 一个 Handler 可绑定多个 Formatter(通过 condition 切换)
- Filter 可挂在 Logger 或 Handler 上,实现不同粒度的拦截
动态可调:运行时调整日志行为
日志级别(level)是核心开关,但它的作用位置有两层:Logger 的 level 决定是否接受该日志;Handler 的 level 决定是否处理已接收的日志。这意味着你可以在不改代码的前提下,仅通过配置或运行时调用 logger.setLevel() 或 handler.setLevel(),临时打开 debug 日志排查问题,或关闭低优先级日志节省 I/O 开销。
WO@BIZ电子商务2.0软件是窝窝团队基于对互联网发展和业务深入研究后,采用互联网2.0的思想设计、开发的电子商务和社会化网络(SNS)结合的解决方案产品。WOBIZ是互联网2.0创业、传统网站转型、中小企业宣传产品网应用的最佳选择。 它精心设计的架构、强大的功能机制、友好的用户体验和灵活的管理系统,适合从个人到企业各方面应用的要求,为您提供一个安全、稳定、高效、 易用而快捷的电子商务2.0网络
立即学习“Python免费学习笔记(深入)”;
配置驱动:从代码到字典/文件的平滑过渡
logging 支持直接编码配置,也原生支持 dictConfig() 和 fileConfig()。推荐使用字典配置,因为它清晰表达层级关系、支持变量插值、易于版本管理,且能和 YAML/JSON 配置文件无缝对接。这种设计让日志策略真正脱离业务逻辑,成为可部署、可审计的运维资产。









