防止Python记录器打印到控制台
我对Python中的日志模块非常恼火,因为我真的不知道为什么日志记录器会将日志消息打印到控制台(在调试级别,即使我将FileHandler设置为INFO)。正确生成日志文件。 但我不想在控制台上有任何日志记录信息。 以下是我对记录器的配置:防止Python记录器打印到控制台,python,logging,Python,Logging,我对Python中的日志模块非常恼火,因为我真的不知道为什么日志记录器会将日志消息打印到控制台(在调试级别,即使我将FileHandler设置为INFO)。正确生成日志文件。 但我不想在控制台上有任何日志记录信息。 以下是我对记录器的配置: template_name = "testing" fh = logging.FileHandler(filename="testing.log") fr = logging.Formatter("%(asctime)s,%(msecs)d %(name)s
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)
如果有人能帮助我,那就太好了:)您应该能够添加一个来处理stdout,并将处理程序日志级别设置为高于50的级别。(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")
测试日志的内容
2019-11-21 12:53:02426426根信息日志消息
2019-11-21 12:53:02426426根警告日志消息
2019-11-21 12:53:02426426根错误日志消息
2019-11-21 12:53:02426426根关键日志消息
注意:我使用
console\u log\u level
变量的唯一原因是,我从一个默认函数中提取了大部分代码,该函数将根据参数值设置控制台日志级别。这样,如果我想让脚本“安静”,我可以根据脚本的命令行arg更改日志级别。fh.setLevel(logging.INFO)浮现在脑海中…@user2717954我在代码的第5行这样做了根日志记录器配置了吗?@Klaus D。唯一的配置是我发布的代码,我如何配置根日志记录器?我试着做一些类似logger.getLogger(“”)的事情,然后取消它的标签,但是没有帮助。logging.getLogger()
(没有参数)将获得根记录器。它是层次结构中最高的记录器,可能正在您的案例中进行日志记录。您应该尝试设置其级别。