第14章 Logging和Warning模块

有一些基本的日志记录技术既可以在调试中使用也可以为应用程序提供运行支持。特别地,好的日志可以帮我们证明应用程序符合安全性和审计的要求。

我们经常会遇到需要记录多个包含不同种类信息的日志情况。我们可能会将安全、审计和调试日志分别记录到不同的日志文件中。在一些情况下,我们可能希望把所有信息都记录到一个日志文件中。本章会介绍一些需要这样做的例子。

为了确定程序是正常工作的,用户可能想要看到冗长的输出。这些输出和调试的输出信息不同,最终用户关注的是程序是如何解决他们的问题的。例如,他们可能会改变输入或者用不同的方法处理程序的输出。设定信息级别能够根据用户的需要生成包含不同级别信息的日志。

warnings模块能为开发者和用户提供有用的信息。对于开发者而言,我们可能会用warnings来通知你某个API已经不再维护了。对于用户而言,可能希望向你说明,虽然结果有问题,但是严格来说,它并不是错误的。一些有问题的假设或者令人迷惑的默认值需要向用户提前指出。

当软件维护工程师想要收集一些有用的调试信息时,需要启用日志。我们很少会有情况需要包含所有信息的调试信息:产生的日志文件可能根本无法阅读。通常,我们只需要用于追踪某个特定问题的那部分调试信息,这样就可以修改单元测试用例并且修复软件。

当尝试解决程序崩溃的问题时,可能需要创建一个用于捕获最后几个事件的循环队列。我们可能也可以利用这个队列找到问题,而不用筛选巨大的日志文件。

创建日志有两个必要的步骤。

  • 通过logging.getLogger()函数获得logging.Logger实例。
  • 用获得的Logger创建消息。有许多用于创建不同重要性级别消息的方法,例如warn()

Get Python面向对象编程指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.