【问题标题】:Prevent Python logger from printing to console防止 Python 记录器打印到控制台
【发布时间】:2020-03-17 13:27:37
【问题描述】:

我对 Python 的日志记录模块感到很生气,因为我真的不知道为什么记录器将日志消息打印到控制台(在 DEBUG 级别,即使我将 FileHandler 设置为 INFO)。日志文件已正确生成。 但我不希望控制台上有任何记录器信息。 这是我的记录器配置:

template_name = "testing"
fh = logging.FileHandler(filename="testing.log")
fr = logging.Formatter("%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s")
fh.setFormatter(fr)
fh.setLevel(logging.INFO)
logger = logging.getLogger(template_name)
# logger.propagate = False # this helps nothing
logger.addHandler(fh)

如果有人可以帮助我,那就太好了:)

【问题讨论】:

  • fh.setLevel(logging.INFO) 浮现在脑海中......
  • @user2717954 我在代码的第 5 行做到了
  • 是否配置了根记录器?
  • logging.getLogger()(不带参数)将获得根记录器。它是层次结构中最高的记录器,可能正在记录您的情况。您应该尝试设置它的级别。
  • @StressdBoi69420 不幸的是没有!虽然只是在这个特殊的环境中,但我没有再次遇到这个问题。

标签: python logging


【解决方案1】:

您应该能够添加 StreamHandler 来处理标准输出并将处理程序日志级别设置为高于 50 的级别。(Standard log levels 是 50 及以下。)

我会怎么做的例子......

import logging
import sys

console_log_level = 100

logging.basicConfig(level=logging.INFO,
                    format="%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s",
                    filename="testing.log",
                    filemode="w")
console = logging.StreamHandler(sys.stdout)
console.setLevel(console_log_level)
root_logger = logging.getLogger("")
root_logger.addHandler(console)

logging.debug("debug log message")
logging.info("info log message")
logging.warning("warning log message")
logging.error("error log message")
logging.critical("critical log message")

testing.log 的内容...

2019-11-21 12:53:02,426,426 root INFO info log message
2019-11-21 12:53:02,426,426 root WARNING warning log message
2019-11-21 12:53:02,426,426 root ERROR error log message
2019-11-21 12:53:02,426,426 root CRITICAL critical log message

注意:我拥有console_log_level 变量的唯一原因是因为我从我使用的默认函数中提取了大部分代码,该函数将根据参数值设置控制台日志级别。这样,如果我想让脚本“安静”,我可以根据脚本的命令行参数更改日志级别。

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2012-08-17
    • 2016-04-28
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多