【发布时间】:2018-02-09 18:42:31
【问题描述】:
我正在学习有关登录 Python 的基本教程https://docs.python.org/3/howto/logging.html#a-simple-example,并按照 iPython 控制台中的步骤进行操作。如那里所述,根记录器的默认级别是WARNING:
In [1]: import logging
In [2]: logging.warning('Watch out!')
WARNING:root:Watch out!
In [3]: logging.info('I told you so')
我想将根记录器的级别显式设置为INFO。我尝试使用name='root' 进行操作,但这没有明显效果:
In [4]: logging.getLogger('root').setLevel(logging.INFO)
In [5]: logging.info('I told you so')
如果我不带参数调用logging.getLogger(),我可以设置根记录器的级别:
In [6]: logging.getLogger().setLevel(logging.INFO)
In [7]: logging.info('I told you so')
INFO:root:I told you so
不过,我很好奇,为什么第一次没有成功?看起来这应该可以工作,因为它的name 属性是'root':
In [12]: root_logger = logging.getLogger()
In [14]: root_logger.name
Out[14]: 'root'
简而言之,如果我不想依赖默认值,我会将什么名称传递给 logging.getLogger() 以获取根记录器?
【问题讨论】:
-
根记录器有一个
name属性,但它没有与您定义的其他记录器一起存储在字典中,因此无法通过名称通过getLogger()访问