清华学长教你如何在Python项目中引入日志
Posted 不加班的程序员丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清华学长教你如何在Python项目中引入日志相关的知识,希望对你有一定的参考价值。
在开发一些大型项目的时候,都会使用日志来记录项目运行时产生的信息,以备出错时定位分析和从日志信息中提取数据统计分析等。
在 Python
中使用 logging
内置模块即可对项目进行日志的配置。
简单使用
logging 模块提供了一系列便利的函数
它们分别是 debug(), info(), warning(), error(), critical()
输出结果:
为什么只输出了 warning
, error
和 critical
的结果,因为 logging
模块默认使用 warning
日志级别,就是只有 warning
及以上日志等级才会显示。
日志等级从高到低,如下所示
我们只要把 logging
的默认日志等级改下就好了
输出结果如下:
指定日志输出样式
当然我们还可以指定日志输出格式
输出结果如下:
其中日志信息格式化输出配置样式说明
- %(levelname)s ,日志等级
- %(asctime)s ,时间
- %(filename)s ,文件名
- %(lineno)d ,行号
- %(message)s,日志信息
这些配置都是固定,不可随便写,还有好多日志格式化样式,这里只介绍了一些常用的格式配置,大家可以去官网查看更多的格式化配置信息。docs.python.org/zh-cn/3.7/l…
日志记录到文件中
在 logging.basicConfig
中设置 filename
属性即可把日志信息写入文件中
运行程序后 test.log
如下内容
自定义日志配置
通常我们在项目中都是自定义一些通用日志配置,然后供项目全局使用。写好这些配置下次要在别的项目使用之间复制粘贴过来修改修改一下即可。来康康是如何配置的。
准备日志配置信息
配置日志详细信息,需要导入 logging.config
来进行加载日志配置信息
首先准备日志配置信息字典
其中大字典的 key
都是固定,例如 version,formatters, handlers, root, loggers
等都是固定的配置项。而有一些子选项是可以自己自定义如
formatters
下的simple
和verbose
,是可以改成自己想要的名字。handlers
下的console
和file
也是可以修改的。loggers
下的server
都是一样可以修改的
具体配置的说明,在这字典中都有一一注释我就不全介绍了,我就介绍一下 handlers
日志处理器的配置
在 logging
模块中有许多 日志处理器类,我们只需要在 pycharm
中输入 logging.Handler
就能弹出最基本的几个日志处理类。
而上文所用到的 StreamHandler
则是流处理器,日志将随着系统标准输入、输出流展示,而我们的 PyCharm终端、控制台等 显示的信息就属于系统标准输出流。
而 RotatingFileHandler
日志处理器则是 FileHandler
的子类。其主要作用就是把日志写入文件中,当文件内容达到最大限制时可以自动扩充日志文件,以达到日志文件的轮换。
加载日志配置信息
然后使用 logging.config.dictConfig()
方法加载日志配置,该方法接受一个 字典 参数。
用 logging.getLogger()
即可获取相应配置日志器,其接受一个日志器的名字,不传则默认使用 root
根日志器,同 logging.getLogger('root')
效果一致。
如果之间运行程序会出现如下错误
那是因为你在日志配置中设置了一个文件处理器 file
,其日志文件将存储在 filename
配置项中,在这里是
logging
模块不会自动帮我们创建目录,因此只需在当前目录中创建一个 logs
目录即可。
最后程序运行结果如下
不用跟 root
根日志器,使用 server
日志器,代码如下
控制台
日志文件 logs/test.log
由于 server
日志器设置了 'propagate': True
,会 将日志消息传递给父级记录器的处理程序中,因此不仅控制台会显示日志信息,文件也会记录,但文件记录的等级被设置成 INFO
了,因此 DEBUG
调试日志信息,将不会出现在文件中。
使用日志配置文件
这里我将采用
yaml
格式的日志配置文件。具体配置内容和上文大致一样,多了一个error_file_handler
错误日志处理器,目的就是把 错误日志单独放在一个文件中,方便以后排查错误。
创建日志配置文件
创建 logging.yaml
文件,内容如下所示
加载日志配置函数
这里使用到第三方库如下
-
PyYaml
是用于读取yaml
格式的日志配置文件 -
coloredlogs
用于让日志在控制台中有颜色显示。
然后我们在项目中只要执行完 setup_logging()
日志配置函数
其他模块直接使用 logging.getLogger('server')
就可获取我们配置好的日志器。
日志效果展示
运行 log_test.py
结果如下
控制台信息
全部日志配置文件信息
错误日志文件信息
需要相关python资料可以扫一扫备注【python】
以上是关于清华学长教你如何在Python项目中引入日志的主要内容,如果未能解决你的问题,请参考以下文章
清华学姐教你:Linux下查看日志用到的常用命令赶快学起来!
今天清华学长告诉你Python 参数类型以及在运用中常见的坑