从模块记录器记录到 sys.stdout
Log to sys.stdout from a module logger
我有以下简单的测试脚本:
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
日志消息都打印到控制台 window,但只有 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!')
您应该在 logger
对象上设置 setLevel
。
谢谢
我有以下简单的测试脚本:
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
日志消息都打印到控制台 window,但只有 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!')
您应该在 logger
对象上设置 setLevel
。
谢谢