python - logger.setLevel 没有效果
问题描述
代码:
import logging
logging.root.setLevel(logging.NOTSET)
logger = logging.getLogger('name')
logger.setLevel(logging.NOTSET)
def func():
logger.info('1')
print(logging.getLevelName(logger.getEffectiveLevel()))
print(logger.handlers)
**some code**
logger.info('2')
print(logging.getLevelName(logger.getEffectiveLevel()))
print(logger.handlers)
logger.setLevel(logging.NOTSET)
logger.info('3')
print(logging.getLevelName(logger.getEffectiveLevel()))
print(logger.handlers)
输出:
1
NOTSET
[]
WARNING
[]
WARNING
[]
我假设some code
更改记录器的级别(我确定不是带有 name 的记录器'name'
)。
但是设置之后的级别some code
不起作用。
我该如何设置它?
解决方案
您只是在记录器本身上设置级别。如果记录器级别是NOTSET
有效级别,则包括所有父记录器,因为日志会向上传播记录器层次结构。如果根记录器具有级别WARNING
并且'name'
记录器具有级别,则记录器NOTSET
的有效级别'name'
为WARNING
. ('root'
是每个记录器的祖先)
可以使用以下任何一种方式访问根记录器:logging.root
或logging.getLogger()
或logging.getLogger('root')
。可以像在任何记录器上设置级别一样设置级别:
root = logging.getLogger()
root.setLevel(logging.NOTSET)
推荐阅读
- django - 如何修复 Django 模型中的“Django_Jalali”utcoffset(dt)?
- angular - 如何根据数据动态设置行样式?
- javascript - 如何使用 Cloud Functions 在 Firebase 中实时同步子查询
- reactjs - typeahead 仅在设置了类似的本地数组时才显示远程结果
- javascript - 使用 XPath 或 onClick 或 onblur 选择一个元素并使用 jQuery 模糊该元素
- javascript - 抓取 JS 渲染页面的方法?
- c++ - 如何从 C++ 设置 qml 属性
- python - TypeError:无法获取 - Google Colab
- tfs - 当您分支项目时,您可以更改流程模板吗?
- reporting-services - 在行上设置可见性时隐藏空白