gpt4 book ai didi

python - 在 Python 中的模块之间进行日志记录

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:50 24 4
gpt4 key购买 nike

我正在使用标准 Python 库文档学习日志记录,似乎我遗漏了一些微不足道的东西。我想登录多个模块,但只在主文件中配置每个实例。我认为我做错的是 basicConfig 只适用于控制根记录器的功能,但我很困惑。

你能给我指出正确的方向吗?提前致谢。

# main.py
import logging
import module_log

logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger(__name__)

def test1():
logger.warning("This one is not showing in log but that is what I expect")
module_log.test2()

if __name__ == "__main__":
test1()


# module.py
import logging
logger = logging.getLogger(__name__)

def test2():
logger.warning("This one shouldn't be showing in log but it is")

编辑 1: 更新代码以更好地说明问题。

编辑 2: 我想我找到了问题的根源,甚至认为我不完全明白为什么。我没有直接执行 main.py,而是从 Maya(3d 软件)解释器中调用它(但 Python 解释器也是如此)如果你运行:

>>> import main_log
>>> main_log.test1()

有效!但后来我更改了 main_log.py 以更改调试级别。我习惯在更新模块时运行“reload()”,但是对于这个特定的模块,它似乎不起作用,所以它一直显示相同的结果,这就是为什么无论调试级别是什么,我总是得到相同的结果。

>>> reload(main_log)
>>> main_log.test1()

到目前为止,我唯一的解决方法是完全关闭 Maya 并重新打开它(猜想在 python 解释器中也会发生同样的情况)。我将不胜感激任何进一步的帮助!

最佳答案

在某种意义上,是的,basicConfig 仅配置根记录器。但是,您从 logging.getLogger 获得的任何记录器都将从根记录器继承其配置。

如果您希望模块中的记录器具有特殊行为,请使用 Logger.addHandlerLogger.setLevel 等方法在模块中配置它,或者依赖主应用程序使用 logging.config.fileConfig 以便可以通过配置文件设置所有 记录器的配置。但是,一般来说,您的模块应该关心什么 被记录下来,并将它留给使用该模块的任何东西来确定在哪里,如果有的话,记录的消息被发送。

关于python - 在 Python 中的模块之间进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974027/

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