Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止Python记录器打印到控制台_Python_Logging - Fatal编程技术网

防止Python记录器打印到控制台

防止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

我对Python中的日志模块非常恼火,因为我真的不知道为什么日志记录器会将日志消息打印到控制台(在调试级别,即使我将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)

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

您应该能够添加一个来处理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()
(没有参数)将获得根记录器。它是层次结构中最高的记录器,可能正在您的案例中进行日志记录。您应该尝试设置其级别。