gpt4 book ai didi

不同系统中的Python日志显示不同的格式/级别

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:59 30 4
gpt4 key购买 nike

我有一个用 python 编写的简单命令行程序。程序使用按以下方式配置的日志记录模块将日志记录到屏幕:

logging.basicConfig(level=logging.INFO, format='%(levelname)-8s %(message)s')

奇怪的是,在我的笔记本电脑中,程序以所需的格式记录在正确的级别(INFO),而当我在服务器中运行该程序时,该程序仅以另一种格式记录错误和警告。

在这两个系统中,我都在虚拟环境中运行 Python 2.7。环境并不完全相同。

我认为某些模块正在更改我的配置。我不明白为什么它只发生在服务器中,但是有什么办法可以找到哪一个吗?

提前致谢,

最佳答案

如果根记录器已经配置了处理程序,则日志记录中的 basicConfig() API 将不执行任何操作(如文档所述)。您的 basicConfig() 调用可能会被忽略,因为服务器中的某些其他代码已经为根记录器配置了一些处理程序。

一般来说,库代码不应添加处理程序 - 这是应用程序开发人员的责任。但是,如果您是例如使用框架开发Web应用程序,框架可能已经配置了一些处理程序。

您说“在服务器上”,但不清楚您是在谈论服务应用程序还是只是在恰好是服务器的计算机上运行实用程序脚本。正如你所说,虚拟环境略有不同,因此它们之间的差异可能是寻找提示的地方。

要找出根记录器上配置处理程序的内容,您可以 grep basicConfig()addHandler() 的相关源。

或者,您可以显式添加处理程序,而不是依赖 basicConfig() 来为您完成此操作:

f = logging.Formatter('%(levelname)-8s %(message)s')
h = logging.StreamHandler()
h.setFormatter(f)
logging.getLogger().addHandler(h)

但如果其他控制台处理程序也添加到根记录器,这可能会导致多条消息。

关于不同系统中的Python日志显示不同的格式/级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5909081/

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