Python开发之日志记录模块:logging(2)

 上面的函数都有*args, **kwargs这两个参数,所以这些函数可以接受任意位置参数和关键字参数,这些参数填充到第一个参数msg,最后一条日志输出中添加了当前日期就是利用了这个功能。

那为什么会只输出后面3条日志记录呢?上面说到过,logging就只会输出大于和等于设定的等级的日志记录,而logging的默认日志等级是WARNING,所以日志等级为DEBUG和INFO的两条记录都没有被输出。

如果想要输入日志等级为DEBUG和INFO的日志记录,就要对logging进行配置。logging也提供了一个模块级别的专用于配置logging的函数:

函数

 

说明

 

logging.basicConfig(**kwargs)

 

对root logger进行一次性配置

 

尝试使用一下这个配置函数:

import logging logging.basicConfig(level=logging.DEBUG) # 设置日志等级 logging.debug('debug') logging.info('info') logging.warn('warn') logging.error('error') logging.critical('critical')

运行结果如下:

DEBUG:root:debug

INFO:root:info

WARNING:root:warn

ERROR:root:error

CRITICAL:root:critical

看,日志等级为DEBUG和INFO的两条记录也都得到了输出。

上面表格对logging.basicConfig函数的说明中指出,logging.basicConfig函数时一次性配置,什么意思呢?意思就是说,logging.basicConfig函数只在第一次运行(第一次对logging进行配置)时起作用,后面在此设置其他参数是不会生效的。通过代码证明一下:

import logging logging.basicConfig(level=logging.DEBUG) # 设置日志等级 logging.basicConfig(level=logging.INFO) # 重新设置日志等级 logging.debug('debug') logging.info('info') logging.warn('warn') logging.error('error') logging.critical('critical')

运行结果:

DEBUG:root:debug

INFO:root:info

WARNING:root:warn

ERROR:root:error

CRITICAL:root:critical

看到没,DEBUG级别日志记录还是输出了,证明重新运行logging.basicConfig函数设置日志级别没有生效。

另外需要注意的是,一定要在使用logging记录日志之前使用logging.basicConfig进行配置,否则,不会有任何输出。

我们再观察一下上面的程序输出,可以发现,每一条输出的结果里,不仅仅只有我们输出的字符串参数,还有其它的一些信息,例如日志等级,日志器名称(默认是root),分隔符(这里是冒号)等,这些都是logging默认给我配置好的,当然,我们也可以通过logging.basicConfig函数的各参数自定义logging的输出。

参数名称

 

描述

 

filename

 

指定日志输出目标文件的文件名,指定该设置项后日志信心就不会被输出到控制台了

 

filemode

 

指定日志文件的打开模式,默认为'a'。需要注意的是,该选项要在filename指定时才有效

 

format

 

指定日志格式字符串,即指定日志输出时所包含的字段信息以及它们的顺序。logging模块定义的格式字段下面会列出。

 

datefmt

 

指定日期/时间格式。需要注意的是,该选项要在format中包含时间字段%(asctime)s时才有效

 

level

 

指定日志器的日志级别

 

stream

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d642fc980407ebf79378f34feecfa099.html