【发布时间】:2018-06-16 09:09:29
【问题描述】:
在我的应用程序中,我有一个主类,我在其中设置此日志记录级别配置
logger = logging.getLogger('my-app')
logger.setLevel(logging.WARNING))
等配置登录文件。其他应用程序对象使用此本地记录器
self.logger = logging.getLogger('{}.{}'.format('my-app', self.__class__.__name__))
他们可以正确记录。 在运行时,应用程序日志级别可以更改,因此我尝试在其他对象中使用此代码
level = logging.DEBUG
...
self.logger.setLevel(level)
- or -
logging.getLogger('my-app.'+self.__class__.__name__).setLevel(level)
- or -
logger = logging.getLogger()
logger.setLevel(level)
但没有任何效果。
所以我决定打印记录器对象的状态,我注意到日志级别发生了变化,但没有在低于 WARN 的级别上打印日志行
pprint(vars(self.logger), indent=2)
#prints
# on app starts, log level WARN by default
{ 'disabled': False,
'filters': [],
'handlers': [],
'level': 0,
'manager': <logging.Manager object at 0x7f5355eb1160>,
'name': 'ClientDesktop.CApplicationStatus',
'parent': <logging.Logger object at 0x7f5359743668>,
'propagate': True}
# on log changed to DEBUG
{ 'disabled': False,
'filters': [],
'handlers': [],
'level': 10,
'manager': <logging.Manager object at 0x7f5355eb1160>,
'name': 'ClientDesktop.CApplicationStatus',
'parent': <logging.Logger object at 0x7f5359743668>,
'propagate': True}
您可以看到级别更改但没有登录文件。我还调试了日志库,我看到对 loggin 的检查已经过验证,因为我没有更改文件路径参数,所以我希望它应该继续工作。
感谢您的帮助
编辑 正如 bruno desthuilliers 的回复中所解释的那样,我的处理程序有一个父母
logging.getLogger('my-app')
定义所有处理程序的地方。将父级别和所有处理程序级别设置为新值就可以了。
谢谢。
【问题讨论】:
标签: python python-3.x logging