5.6. 日志记录 | 写出优雅的 python 代码 |《python 最佳实践指南 2018 2018》| python 技术论坛-380玩彩网官网入口

未匹配的标注

file

 模块自 2.3 版以来一直是 python 标准库的一部分。在 中有对它的简洁描述。除了 之外,这些文档是非常难以阅读的。

日志记录一般有两个目的:

  • 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。
  • 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用户报告,或者用来作为优化商业目标的数据支撑。

... 或者使用打印(print)?

当需要在命令行应用中显示帮助文档时, print 是一个相对于日志更好的选择。 而在其他时候,日志总能优于 print ,理由如下:

  • 日志事件产生的  ,包含清晰可用的诊断信息,如文件名称、路径、函数名和行号等。
  • 包含日志模块的应用,默认可通过根记录器对应用的日志流进行访问,除非你做了日志过滤。
  • 可通过  方法有选择地记录日志, 或可通过设置 logging.logger.disabled 属性为 true 来禁用日志记录。

在库中记录日志

官方的   里有相关的  的说明。由于是 用户 ,而非库来指定如何响应日志事件, 因此这里有一个值得反复说明的忠告:

注意

强烈建议不要向您的库日志中加入除 nullhandler 外的其它处理程序。

在库中,声明日志的最佳方式是通过 __name__ 全局变量:  模块通过点(.)运算符创建层级排列的日志,因此,用 __name__ 可以避免名字冲突。

以下是一个来自  的最佳实践的例子 ------ 请将它放置在 __init__.py 文件中:

import logging
logging.getlogger(__name__).addhandler(logging.nullhandler())

在应用程序中记录日志

应用程序开发的权威指南    也在其中一节描述了  。它特别强调将日志视为事件流, 并将其发送至取决于应用环境配置的标准输出中。

至少有以下三种配置日志方式:

  • 使用 ini 格式文件:

    • 优点:使用  函数监听 socket,可在运行过程中更新配置
    • 缺点:相比代码里控制,可控性要弱( 例如 子类化定制的 filtersloggers)。
  • 使用字典或 json 格式文件:

    • 优点:除了可在运行时动态更新,在 python 2.6 之后,还可通过  模块从其它文件中导入配置。
    • 缺点:相比代码里控制,可控性要弱
  • 使用代码控制:

    • 优点:相比配置来讲,有绝对的控制。
    • 缺点:需要对源码进行修改。

本文章首发在 380玩彩网官网入口 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 cc 协议,如果我们的工作有侵犯到您的权益,请及时联系380玩彩网官网入口。

原文地址:https://learnku.com/docs/python-guide/20...

译文地址:https://learnku.com/docs/python-guide/20...

上一篇 下一篇
讨论数量: 0



暂无话题~
网站地图