Python 从模块记录器记录到sys.stdout
我有以下简单的测试脚本:Python 从模块记录器记录到sys.stdout,python,logging,python-logging,Python,Logging,Python Logging,我有以下简单的测试脚本: 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.addHandle
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!
例如,我希望信息
和警告
日志消息都打印到控制台窗口,但只有警告
消息打印到控制台窗口。怎么会呢?我想答案就在这里
您也需要在记录器
自身上设置级别
,其级别(默认警告)将不允许来自其处理程序的消息具有低于父记录器中设置的级别
处理程序是用来过滤消息的。我想它包含了答案
您也需要在记录器
自身上设置级别
,其级别(默认警告)将不允许来自其处理程序的消息具有低于父记录器中设置的级别
处理程序用于过滤消息。这应该可以吗
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__)
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
谢谢