1. 问题的由来
我们在运行代码的时候,总是期望可以获得更多的信息,并记录潜在错误。我们不妨可以使用Logging
模块来代替常见的print
语句,以此来协助帮助我们进行简洁的日志输出。
2. 为什么需要使用Logging模块
Logging
模块允许我们获取特定代码中错误调试信息。对于一些小型项目,简单的print
操作有助于帮主我们协助定位语句中的错误。但在一些更加复杂的项目中,比如某些项目中含有多个函数和子模块,此时使用logging
是一个更好、更有助于条理输出的选择。
总之,弄明白Logging
模块的配置虽然是复杂的,但是绝对是值得的。
3. Logging 导入
Logging
模块是Python的内置模块,所以我们无需再显示进行安装。如果我们想要使用该模块,可以直接使用以下语句:
import logging
其中,Logging
模块有很多内容,但是今天主要分享一个基础例子和一个高级例子供大家学习。
4. Logging Levels
日志记录级别(Logging Levels)允许我们设置更加具体的输出日志等级,例如调试信息、INFO信息,或者错误信息。
常见的日志等级包括:
Levels | Descriptions |
DEBUG | Detailed information. mostly for diagnostics |
INFO | Mostly to confirm that something is working. |
WARNING | Something happens that can create problems in the future. |
ERROR | A serious problem. the software cannot perform the action. |
CRITICAL | Serious Error. software unable to continue. |
默认的日志等级为 WARNING
,如果我们未对日志级别进行配置,则只输出等级高于WARNING
的消息,即ERROR
和CRITICAL
消息。
5. 基础用法
如果我们需要改变日志输出的级别,可以通过basicConfig
函数进行配置,样例如下:
同时我们也可以将输出信息输出至文件中,相应的配置语句如下:
更近一步,如果我们需要规定输出信息的格式,我们可以对参数format
进行相应的设置,代码如下:
上述代码中,我们通过设置format
参数,可以将输出的信息按照time-message
的格式进行规范化输出。当然我们也可以定义自己喜欢的输出格式。
最后给出一个完整的样例,如下:
我们查看相应的log文件,输出如下:
2022-04-28 22:12:26,095-10
可以看书,在最后的-
号之前为当前语句的运行时间,之后为我们调试的输出信息,也就是变量sum
的取值。
6. 高级用法
接下来我们来分享一些Logging
模块中更为实用的高级用法,首先我们一般根据相应的py
文件名来生成相应的输出日志文件,样例如下:
我们使用上述日志文件命名的方式可以方便我们快速的知道当前的调试信息是在那个子模块中。
同时,我们一般使用setLevel()
函数来设置相应的日志等级,样例如下:
当然我们也可以使用FileHandler
来创建输出日志文件,样例如下:
当然,我们我们希望同时可以将日志信息输出在控制台,我们可以使用StreamHandler
来实现,样例如下:
接着,我们可以通过Formatter
来设置输出日志的格式,样例代码如下:
最后,我们将上述所有的操作拼到一起,得到如下配置设定:
在具体应用中,我们每次的调用形式如下:
logger.info(f'Starting script')
7. 总结
本文重点介绍了在Python中如何使用Logging
模块来优雅地创建日志并进行相应的配置管理。
您学废了吗?
关注公众号《AI算法之道》,获取更多AI算法资讯。