我希望所有警告都按照我希望处理日志的方式进行处理。即使这些是在导入库期间发出的。
这意味着必须在导入库之前完成日志记录的配置。
经过一段时间的搜索后,我认为在自定义中配置日志记录sitecustomize.py
可能是一个解决方案。
But sitecustomize.py
不知何故,黑魔法只有少数人知道,使用它的人就更少了。
有没有更明显的方法来确保我的日志配置在导入库之前完成?
不幸的是,似乎无法通过环境变量配置日志记录。
Update
我没有得到根据我的观点可以接受的答案。我认为您需要将日志记录分为两个责任领域:
- 环境:设置日志记录:哪种格式,哪些文件......
- 代码:使用日志记录。发出信息、警告和错误消息。
一旦Python解释器执行了第一行代码,“环境”区域就将责任交给了代码。现在进行任何配置都为时已晚。我希望看到将日志记录设置为调用 python 解释器的一部分。
一种解决方案可能是环境变量:
PYTHON_LOGGING_CONFIG=/path-to-env/etc/config.yaml
或向解释器提出一个论点:
python --logging-config=path-to-env/etc/config.yaml script.py
如果您希望日志记录覆盖导入,显然没有办法在导入其他任何内容之前显式配置日志记录。
但是,如果您希望日志记录配置更加明显,有多种技巧可以帮助您做到这一点。例如,您的main脚本可以如此短,只是为了强调特殊情况:
import siteconfiguration
siteconfiguration.configure_site() # This must be done before any other import
import application
if __name__ == "__main__":
application.run()
这仍然打破了所有进口都位于顶部的规则,但它也清楚地说明了这样做的原因。使用该代码的每个人都会理解您的意图。
特殊情况还不足以违反规则。
尽管实用性胜过纯粹性。
(《Python 之禅》,作者:Tim Peters)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)