远距离的欣赏,近距离的迷惘
开发项目中缺不了日志控制,而在python中编写日志往往选择封装logging库,因为logging库足够强大,且支持自由配置。今日在开发项目的过程中,折腾了logging好一会儿,在此记录一下。
logging模块
日志级别(level):
logging基础使用
|
|
说明:运行程序将直接在控制台输出日志内容,默认情况下日志级别为WARNING,即级别大于等于WARNING的日志才会被输出。
logging.basicConfig
通过basiConfig函数对logging日志进行配置:
说明:运行程序将不会在控制台有任何输出,而是生成了一个test.log文件,文件内容为:
basicConfig函数参数:
StreamHandler
将日志同时输出控制台以及记录到文件中,可以使用StreamHandler函数创建一个输出到console的流。
logging.conf配置文件
如果项目比较简单,以上的介绍已经足够使用了,但如果项目较大,建议使用配置文件的方式。
创建一个配置文件logger.conf
|
|
加载使用配置文件
|
|
说明:观察配置文件,可以看到loggers有三个,分别是root,scan,hearts;root是默认的,即config.fileConfig中不写表示选择root;然后scan logger 中的handlers是handler_console,handler_file_scan,说明这个logger有2个流,一个是输出到控制台的,一个是写入文件的。这几个handler中的formatter选项都一样,为formatter_form,即可以在这个选项中配置日志的格式。
handler配置说明
可以看到以上配置文件handler_console中的args参数,在console中使用sys.stderr,将会把输出到控制台;而另外2个handler的args参数的内容是文件地址,注意这个文件地址可以是静态地址,比如:test.log,也可以是动态生成的,比如上面使用当前日期生成的。之所以可以这么写,是因为配置文件将会被执行eval函数,因此可以在这个配置文件里面写python代码,将会被执行。
当然除了写入文件,输出到控制台外,logging还支持其他的日志记录方式,参考摘录自logging文档:
参考文章
http://python.usyiyi.cn/translate/python_278/library/logging.config.html
https://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html