0

我有以下简单的测试脚本:

import logging
import sys


logger = logging.getLogger(__name__)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.INFO)
handler.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s'$
logger.addHandler(handler)


logger.info('Hello World!')
logger.warning('Bad!')

python test.py我在命令行中运行这个脚本。我得到:

__main__ - WARNING - Bad!

当我期望得到:

__main__ - WARNING - Bad!
__main__ - INFO - Hello World!

例如,我希望 theinfowarninglog 消息都打印到控制台窗口,但只有warning消息打印。怎么会?

4

2 回答 2

2

这应该有效吗?

import logging
import sys


logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s'))
logger.addHandler(handler)


logger.info('Hello World!')
logger.warning('Bad!')

您应该setLevellogger对象上设置。

谢谢

于 2019-01-28T04:07:46.117 回答
1

我认为python 日志处理程序中 setLevel 的意义何在?包含答案。

您也需要自行setLevel设置logger,它的级别(默认警告)将不允许来自其处理程序的消息的级别低于父记录器中设置的级别。

处理程序用于过滤消息。

于 2019-01-28T04:07:31.553 回答