20201228-1 一个使用模块logging的程序
import logging logging.basicConfig(level=logging.INFO, filename='mylog.log') logging.info('Starting program') logging.info('Trying to divide 1 by 0') print(1/0) logging.info('The division succeeded') logging.info('Ending program') 运行这个程序时,将生成下面的日志文件(mylog.log): INFO:root:Starting program INFO:root:Trying to divide 1 by 0
如你所见,试图将1除以0后什么都没有记录下来,因为这种错误将导致程序终止。 这是一种简单的错误,你可根据程序崩溃时打印的异常来跟踪确定问题出在什么地方。
不会导致程序终止、而只是让它行为异常的bug是难查找的, 但通过查看详尽的日志文件也许能够帮助你找出问题 出在什么地方。
这个示例中的日志文件并不是很详细,但通过合理地配置模块logging,可让日志以你希望 的方式运行。下面是几个这样的示例。 记录不同类型的条目(信息、调试信息、警告、自定义类型等)。
默认情况下,只记录警告。(这就是在代码清单中显式地将level设置为logging.INFO的原因所在。) 只记录与程序特定部分相关的条目。 记录有关时间、日期等方面的信息。 记录到其他位置,如套接字。 配置日志器,将一些或大部分日志过滤掉,这样无需重写程序就能获得所需的日志信息。模块logging非常复杂,文档中还提供了其他很多相关的信息