首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >logger.setLevel(logging.INFO)不使logger.info()可见

logger.setLevel(logging.INFO)不使logger.info()可见
EN

Stack Overflow用户
提问于 2015-01-21 19:35:18
回答 1查看 2K关注 0票数 4

我正在Windows下编写Python3.4.2。就我而言,

代码语言:javascript
复制
import logging

logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
logger.info('test')

控制台上什么也没有显示。但

代码语言:javascript
复制
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('logger')
logger.info('test')

圆满地展示

代码语言:javascript
复制
INFO:logger:test

我预计logger.setLevel(logging.INFO)将允许与第二个代码片段中的输出相同,其中记录器级别由根记录器控制,但不允许。那么问题在哪里呢?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 19:42:32

您需要向记录器添加一个Handler。调用basicConfig是实现这一目的的一种方法。

多种处理程序。StreamHandler打印到控制台,但也有FileHandlers、SocketHandlers和SMTPHandlers等。如果不指定任何处理程序,则不会处理记录,也不会发出任何信息。

要添加StreamHandler (不调用basicConfig),可以使用:

代码语言:javascript
复制
import logging

logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
console = logging.StreamHandler()
logger.addHandler(console)
logger.info('test')

这会将StreamHandler添加到名为logger的记录器中。若要将处理程序添加到根记录器,请使用

代码语言:javascript
复制
logging.root.addHandler(console)

通过在根记录器上设置Handler,StreamHandler可以处理logger以外的其他记录器生成的记录。有关何时发生这种情况的图片,请咨询测井流程图

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

https://stackoverflow.com/questions/28075381

复制
相关文章

相似问题

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