1. 问题的由来
我们在运行代码的时候,总是期望可以获得更多的信息,并记录潜在错误。我们不妨可以使用Logging模块来代替常见的print语句,以此来协助帮助我们进行简洁的日志输出。
2. 为什么需要使用Logging模块
Logging模块允许我们获取特定代码中错误调试信息。对于一些小型项目,简单的print操作有助于帮主我们协助定位语句中的错误。但在一些更加复杂的项目中,比如某些项目中含有多个函数和子模块,此时使用logging是一个更好、更有助于条理输出的选择。
总之,弄明白Logging模块的配置虽然是复杂的,但是绝对是值得的。
3. Logging 导入
Logging模块是Python的内置模块,所以我们无需再显示进行安装。如果我们想要使用该模块,可以直接使用以下语句:
其中,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算法资讯。
【文章转自:防御服务器 http://www.558idc.com/aqt.html提供,感恩】