gpt4 book ai didi

Python 跨模块日志记录

转载 作者:太空狗 更新时间:2023-10-29 22:23:41 25 4
gpt4 key购买 nike

我用谷歌搜索并查看了默认文档,但我不明白为什么这不会产生三行日志记录:

# main.py
import logging
import apple
import banana

log = logging.getLogger('main')
log.setLevel(logging.DEBUG)

ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)

log.addHandler(ch)

log.info("I'm in main!")
    # apple.py
    import logging

    log = logging.getLogger('main.apple')
    log.info("I'm here in apple!")
      # banana.py
      import logging

      log = logging.getLogger('main.banana')
      log.info("I'm here in banana!")
        # output
        2011-09-03 16:40:54,062 - main - INFO - I'm in main!

        但是example in the logging documentation工作正常。

        有什么想法吗?

        最佳答案

        处理程序 (StreamHandler) 在导入之后才设置。因此导入模块中的日志记录命令不会产生任何输出。一些处理程序打印到文件,其他处理程序通过网络通信,还有一些打印到控制台。在没有将处理程序添加到记录器的情况下,导入模块中的日志记录语句无法知道要做什么。

        如果模块中的日志语句驻留在类或函数中,就像它们在您链接到的示例中所做的那样,那么可以看到输出,因为在调用模块类或函数时,处理程序已经添加到记录器。

        关于Python 跨模块日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294127/

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