gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:22:41 24 4
gpt4 key购买 nike

我对 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)

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

最佳答案

我在删除 logging.basicConfig() 后遇到类似问题时发现了这个问题。它开始在控制台中打印所有日志。

在我的例子中,我需要在每次运行时更改文件名,以将日志文件保存到不同的目录。在顶部添加基本配置(即使从未使用过初始文件名,也为我解决了这个问题。(抱歉,我无法解释原因)。

帮助我的是在开始时添加基本配置:

logging.basicConfig(filename=filename,
format='%(levelname)s - %(asctime)s - %(name)s - %(message)s',
filemode='w',
level=logging.INFO)

然后通过在每次运行中添加处理程序来更改文件名:

file_handler = logging.FileHandler(path_log + f'/log_run_{c_run}.log')
formatter = logging.Formatter('%(asctime)s : %(levelname)s : %(name)s : %(message)s')
file_handler.setFormatter(formatter)
logger_TS.addHandler(file_handler)

也很奇怪的旁注。如果我在使用新文件名设置处理程序之前没有设置格式化程序 (file_handler.setFormatter(formatter)),则日志文件中缺少初始格式化的日志记录(级别名称、时间等) .

所以,关键是先设置logging.basicConfig,然后再设置add handler。如上文所述@StressedBoi69420。

希望对您有所帮助。

关于python - 防止 Python 记录器打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58977892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com