首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >logging.StreamHandler.setLevel(logging.DEBUG) <--不起作用

logging.StreamHandler.setLevel(logging.DEBUG) <--不起作用
EN

Stack Overflow用户
提问于 2014-04-15 15:37:39
回答 1查看 2K关注 0票数 2

我不知道为什么不能记录的消息,我认为所有设置都是正确的。

logging.DEBUG定义在日志记录模块下。

代码语言:javascript
复制
import logging
import sys

logger = logging.getLogger('collega_GUI')
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s %(levelname)s --file: %(module)s --riga: %(lineno)d, %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

logger.debug('def __init__')

但是,如果我尝试运行这个,它可以运行

代码语言:javascript
复制
logger.warning('def __init__')

这个级别变量的问题在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 16:49:21

问题是,调试级别的消息在到达处理程序之前就被记录器过滤掉了。通过将handler.setLevel(logging.DEBUG)改为logger.setLevel(logging.DEBUG)解决了这个问题。

您可以在几个不同的地方按日志级别进行筛选,因为日志消息从链上传递下来。默认情况下,记录器只传递信息和以上信息,处理程序接受一切。如果希望将不同级别的日志记录转到不同的位置,则允许处理程序使用不同的日志级别非常有用。例如,您可以将您的记录器设置为调试,然后创建一个在WARN和上面登录到屏幕上的处理程序,以及另一个在DEBUG和上面记录到文件的处理程序。用户得到一些信息,日志文件是聊天的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23088360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档