【问题标题】:Python logging calling module from multiple places来自多个地方的 Python 日志记录调用模块
【发布时间】:2018-07-16 19:26:45
【问题描述】:

我想使用 python 的日志记录模块和点“。”为我的项目设置日志记录层次结构。此处描述的名称结构:https://docs.python.org/2/library/logging.html#logging.getLogger

对于给定的模块 (bar.py),我想设置记录器,如下所示:

log = logging.getLogger('x.bar')

然后我可以在整个 bar.py 模块中使用 log.(debug/info/warning/etc...)。我知道 bar.py 永远不会直接运行,但其中的函数可能会从其他几个模块调用 - 所以我不知道在代码 sn-p 中将“x”设置为什么。我希望 bar.py 从它的调用者 (x) 继承日志处理程序和格式化程序。

【问题讨论】:

标签: python logging


【解决方案1】:

通过logging.getLogger('mymodule') 实例化模块范围的记录器的标准方法不是为您的预期行为量身定制的。您应该做的是让调用者将记录器作为参数传递给模块中的函数

# mymodule.py
def foo(plogger, a, b):
    logger=plogger.getChild('bar')
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多