在 Python 中使用 print() 来输出某个变量从而检查参数错误是修 Bug 前期工作的常用手段。但其实 Python 日志处理用得好会节省时间用于修Bug。记日志会帮助我们理解程序中发生的事以及事情发生的顺序,也能直接观察到整个程序某个值的变化过程。不过以下5个操作细节值得注意。


使用日志模块

使用日志消息要启用 logging 模块,在程序运行时将日志信息显示在屏幕上,所以我们当然需要先调用该模块了,并且输入以下代码:


这行代码的作用是定义的一个输出格式,输出某一条日志消息执行的时间。

当 Python 记录一个事件的日志时,它会创建一个 LogRecord 对象,保存关于该事件的信息,Logging 模块的函数让你能够指定看到这个 LogRecord 对象的细节,以及希望的细节展示方式。

值得注意的是,当我们想要将监控的值通过日志文件进行输出时,需要调用 logging.deBug() 函数,并且该函数的输出方式与 print() 相同,而这行消息输出值的格式,就是我们最开始在 logging.loasicConfig() 中指定的,并且包括我们传递给 debug() 的参数消息。



以上是示例及运行结果,通过这样的一个日志我们就可以非常直观地看到程序在运行过程中的变化情况。

不使用print()调试程序

不建议使用 print() 函数进行值的监控输出,并不是说 pintf 函数不能够将我们监控的变量值输出。而是我们在将程序调试完成的时候,需要花费很多时间从代码中清除每条日志消息中的 print() 函数,而这样很有可能一不小将正确内容删除。然而,日志消息就很好地避免了这一点。

使用 logging.debug() 输出的语句在最后也不需要我们一个个的将其禁用,只需要调用 logging.disable(logging.CRITICAL) 就可以完全禁止日志输出。

日志级别

所调用的日志文件是有日志级别的,“日志级别”提供了一种方式,这种方式按重要性将日志消息分为五个级别


日志级别的好处就在于,我们可以改变想要看到的日志消息的优先级,向 basicConfig() 函数传入 logging DEBUG 作为 level 的关键字参数,这将显示所有日志级别的消息。

禁用日志

在调试完成以后,我们当然不希望所有这些日志出现在屏幕之上,这时我们需要调用 logging.disable 函数禁用这些消息,这样这些日志消息就不必进入到程序之中手动删除或者将所有日志注释掉,只需要向 logging.disable 传入一个级别,它就会禁止该级别和更低级的所有日志消息。


同时还有一点需要注意的是:logging.disable() 函数将禁用它之后的所有该级别及以下的消息。

将日志记录到文件

除了将日志消息显示在屏幕上以外,还可以将它们写入到文本文件之中。这样做目的是为了我们在进行程序调试的时候,不至于很多日志文件显示在屏幕,从而影响我们对变量的读取的读取,在 rogging.basicConfig 函数接收filename 关键字为参数。


这样程序输出的结果中就只会有我们使用 print() 想要输出的内容,对于日志消息,则会保存在相应的日志文件中去。这样就会使屏幕变得干净整洁的同时,很好地保存信息。