Python记录器未打印信息

时间:2019-06-27 22:33:04

标签: python logging

查看python文档,如果我将记录器级别设置为INFO,它将打印出INFO或更高级别的所有日志。

但是,下面的代码片段仅显示“错误”

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info("Info")
logger.error("error")
logger.info("info")

输出

error

这可能是什么原因?

2 个答案:

答案 0 :(得分:1)

使用logging.basicConfig设置默认级别和默认处理程序:

import logging

logger = logging.getLogger()
logging.basicConfig(level=logging.INFO)

logger.info("Info")
logger.error("error")
logger.info("info")

打印:

INFO:root:Info
ERROR:root:error
INFO:root:info

logging模块功能强大但令人困惑。查看文档中的the HOWTO以获得教程。我已经创建了自己的帮助程序功能,该功能记录到stderr和我在my blog上详细介绍过的文件。您可能想使其适应您的需求。

答案 1 :(得分:0)

这种行为的原因是没有定义日志处理程序。 在这种情况下,使用处理程序“logging.lastResort”。 默认情况下,此处理程序为“<_StderrHandler (WARNING)>”。 它记录到标准错误,但仅从“警告”级别开始。

对于您的示例,您可以执行以下操作(登录到标准输出):

import logging
import sys
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.info("info")

输出

info

howto 中,您可以找到其他有用的处理程序。