【问题标题】:logging package - share log file between main and modules - python 3日志记录包 - 在主模块和模块之间共享日志文件 - python 3
【发布时间】:2017-03-02 11:24:38
【问题描述】:

我的项目由 main.py 主脚本和模块 aaa.py 组成。我已经通过使用 main.py 中的日志记录包成功地设置了一个日志过程,还指定了一个日志文件名。

让aaa.py中包含的函数写入同一个日志文件的最干净/“正确”的方法是什么?

【问题讨论】:

    标签: python python-3.x logging module


    【解决方案1】:

    如果您一次只调用一个 python 脚本 (main.py)
    然后您只需定义一次日志记录配置;例如:
    logging.basicConfig(filename=logfilepath, format='%(levelname)s:%(message)s')

    并在模块中的任意位置调用它,例如
    logging.<level>("log_string")

    【讨论】:

      【解决方案2】:

      通过定义使用 main.py 中的根记录器

      logger = logging.getLogger()
      fh = logging.FileHandler("path/to/file")
      logger.addHandler(fh)
      

      然后通过定义在aaa.py中使用模块记录器

      logger = logging.getLogger(__name__)
      

      记录器不必与模块同名,但这是常见的做法。子模块记录器将自动冒泡到根记录器并发送到任何处理程序。

      引用docs

      子记录器将消息传播到与其祖先记录器关联的处理程序。因此,没有必要为应用程序使用的所有记录器定义和配置处理程序。为顶级记录器配置处理程序并根据需要创建子记录器就足够了。

      【讨论】:

        猜你喜欢
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 2021-11-23
        • 2017-06-04
        • 2014-10-21
        • 2020-08-11
        相关资源
        最近更新 更多