python标准的logging模块,有一个basicConfig函数,这个函数有个特点,必须首先调用。后面调用的都无效。
如果我们要改变logging模块的默认配置,就需要basicConfig函数的支持,而且这个函数必须要在所有debug,info,warning,errir,critical函数之前调用,如果在后面,此函数就无效了。
python官方的教程里面是这样写的:
The call to basicConfig() should come before any calls to debug(), info() etc. As it’s intended as a one-off simple configuration facility, only the first call will actually do anything: subsequent calls are effectively no-ops.
我们可以试一下,logging模块默认的level是warning:
>>> import logging
>>> logging.warning('pynote.net')
WARNING:root:pynote.net
>>> logging.basicConfig(level=logging.ERROR)
>>> logging.warning('pynote.net')
WARNING:root:pynote.net
先记录了一条warning级别的日志,然后调用basicConfig将level设置为error,然后在记录warning级别的日志,依然有效,说明basicConfig函数已经无效了。
如果先调用basicConfig函数,就OK:
>>> import logging
>>> logging.basicConfig(level=logging.ERROR)
>>> logging.warning('pynote.net')
>>> logging.error('pynote.net')
ERROR:root:pynote.net
python官方教程推荐在命令行将level作为一个用户配置的参数,我觉得这个思路很nice。
-- EOF --