gpt4 book ai didi

python - 提前设置日志记录 : Catch warnings emmited during importing

转载 作者:太空狗 更新时间:2023-10-30 01:07:01 25 4
gpt4 key购买 nike

我希望按照我希望处理日志的方式来处理所有警告。即使是在导入库期间发出的这些。

这意味着日志记录的配置必须在导入库之前完成。

经过一段时间的搜索,我认为在自定义 sitecustomize.py 中配置日志记录可能是一种解决方案。

但是 sitecustomize.py 是一种黑魔法,只有少数人知道,使用它的人就更少了。

是否有更明显的方法来确保在导入库之前完成我的日志记录配置?

不幸的是,似乎无法通过环境变量配置日志记录。

更新

根据我的观点,我没有得到可以接受的答案。我认为您需要将日志记录分成两个责任区域:

  • 环境:设置日志记录:哪种格式,哪些文件...
  • 代码:使用日志记录。发出信息、警告和错误消息。

一旦第一行代码被 python 解释器执行,“环境”区域就将责任交给了代码。现在进行任何配置都为时已晚。我希望看到将日志记录设置为调用 python 解释器的一部分。

一个解决方案可能是环境变量:

PYTHON_LOGGING_CONFIG=/path-to-env/etc/config.yaml

或解释器的参数:

python --logging-config=path-to-env/etc/config.yaml script.py

最佳答案

如果您希望日志记录覆盖导入,显然没有办法在导入任何其他内容之前显式配置日志记录。

但是,如果您希望日志配置更加明显,可以使用各种技巧来帮助您做到这一点。例如,您的主要 脚本可以像这样短,只是为了强调特殊情况:

import siteconfiguration
siteconfiguration.configure_site() # This must be done before any other import

import application


if __name__ == "__main__":
application.run()

这仍然打破了将所有导入放在顶部的规则,但它也清楚地说明了这样做的原因。使用该代码的每个人都会理解您的意图。

Special cases aren't special enough to break the rules.

Although practicality beats purity.

(Python 之禅,作者 Tim Peters)

关于python - 提前设置日志记录 : Catch warnings emmited during importing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932553/

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