【问题标题】:Why don't I get any output for logger.info [duplicate]为什么我没有得到 logger.info 的任何输出 [重复]
【发布时间】:2021-08-11 21:13:30
【问题描述】:
import logging

# create logger
logger = logging.getLogger(__name__)

def start():
    print(f"logger.isEnabledFor(logging.INFO) 20: {logger.isEnabledFor(logging.INFO)}")
    print(f"logger.getEffectiveLevel(): {logger.getEffectiveLevel()}")
    logger.setLevel(logging.INFO)
    print(f"logger.setLevel(logging.INFO) done")
    print(f"logger.getEffectiveLevel(): {logger.getEffectiveLevel()}")
    print(f"logger.isEnabledFor(logging.INFO) 20: {logger.isEnabledFor(logging.INFO)}")
    logger.info('info message')
    logger.warning('warn message')
    logger.error('error message')
    logger.critical('critical message')

start()

为什么不记录:

info message

我知道 root logger 从 logging.WARNING 开始记录,但我想我已经修改了我的 logger 的有效级别,对吧?

无关:为什么 logger 模块被设计成使用起来如此笨拙?

【问题讨论】:

    标签: python-3.x logging


    【解决方案1】:

    添加此行logging.basicConfig(level=logging.INFO)

    import logging
      
    # create logger
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger(__name__)
    
    # rest of the code
    

    结果:

    logger.isEnabledFor(logging.INFO) 20: True
    logger.getEffectiveLevel(): 20
    logger.getEffectiveLevel(): 20
    logger.isEnabledFor(logging.INFO) 20: True
    INFO:__main__:info message
    WARNING:__main__:warn message
    ERROR:__main__:error message
    CRITICAL:__main__:critical message 
    

    为了让您的代码正常工作,您应该添加一个处理程序

    ch = logging.StreamHandler()
    ch.setLevel(logging.INFO)
    logger.addHandler(ch)
    

    【讨论】:

    • 感谢您的帮助。但我的问题不是如何记录 INFO 消息,我的问题是为什么没有使用我正在试验的代码记录它。
    • 谢谢@LMC 这确实是答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多