繁体   English   中英

Python 日志记录模块 - 记录器未登录正确的级别

[英]Python Logging module - logger does not log on correct level

我尝试实现一个StreamHandler ,它在调试级别记录到stdout 到目前为止一切顺利,这是我的代码。

import logging
import sys

# Detaillierter Logger
logger = logging.getLogger()

file_handler = logging.FileHandler("logs.txt")
file_handler.setLevel(logging.ERROR)

stream_handler = logging.StreamHandler(stream=sys.stdout)
stream_handler.setLevel(logging.DEBUG)

formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(message)s")
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

logger.addHandler(stream_handler)
logger.addHandler(file_handler)


# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

我希望在我的控制台中看到所有日志,但没有记录调试和信息。

(base) C:\Users\User\Desktop\Logging>python script.py
2021-10-30 15:32:49,034 | WARNING | warn message
2021-10-30 15:32:49,034 | ERROR | error message
2021-10-30 15:32:49,035 | CRITICAL | critical message

我的 logs.txt 文件是正确的。 谁能告诉我如何解决这个问题以及为什么流处理程序不能按预期工作?

# You need also
logger.setLevel(logging.DEBUG)

您需要添加多个记录器处理程序,而不仅仅是设置记录器处理程序。

import logging
logging.getLogger().addHandler(logging.StreamHandler())

您还可以使用配置进行日志记录

import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    handlers=[
        logging.FileHandler("debug.log"),
        logging.StreamHandler()
    ]
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM