所以我从命令行python运行以下代码:
import logging
rootLog = logging.getLogger(__name__)
rootLog.setLevel(logging.INFO)
rootLog.warning("This is a root warning")
rootLog.info("This is root info")
def info():
log = rootLog.getChild("info")
log.info("This is info")
log.warning("This is a warning")
info()
我期待在控制台上看到所有四条日志消息,但我只看到警告.到底是怎么回事?我误会了什么吗?
编辑:
我通过在脚本的开头添加logging.basicConfig()来发现我将获得我期望的输出.这很奇怪,因为有关日志记录的python文档说明:
The functions debug(), info(), warning(), error() and critical() will call basicConfig() automatically if no handlers are defined for the root logger.
解决方法:
您从手册中引用的位在Module-Level Functions以下,仅在模块功能时适用
logging.debug()
字面意思是.由于您使用rootLog.info()调用实例方法,因此不会为您调用basicConfig,并且您可能正在与空记录器进行通信.文档在那里有点混乱.
使用loggging.basicConfig(),事情应该有效.
标签:python,command-line,logging
来源: https://codeday.me/bug/20190530/1182187.html