我有以下简单的测试脚本:
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!
例如。我希望无论是info
和warning
日志消息得到打印到控制台窗口,但只有warning
消息一样。怎么会?
我认为What is the point of setLevel in a python logging handler?包含答案。
你需要setLevel
上logger
本身也是如此,它的级别(默认警告)将不会允许它的处理程序的消息比在母记录器设置较低的水平。
处理器是有来过滤消息。
这应该工作?
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!')
你应该设置setLevel
对象的logger
。
谢谢