Python共享模块之间的记录器配置

时间:2015-12-14 22:46:45

标签: python logging

我有一个包含多个模块的项目我希望登录到同一个位置。我已经设置了一个特定的模块,比如说log.py,我已经指定了格式规则和我想要写日志的位置。

到目前为止,我一直在将我在log.py创建的记录器导入到需要使用它的模块中并从那里调用它们,如python logging howto

中所述

现在我想在我导入它的每个模块中更改我的记录器名称,以便能够告诉特定消息来自哪个模块。

最好的方法是什么?我应该将我的记录器子类化并使用模块__name__重新定义记录器的名称是否有更好的方法可以做到这一点?

以下是我的记录器定义的一个元素:

logger = logging.getLogger('main_logger')
logger.setLevel(logging.DEBUG)

以下是我如何使用它的示例:

from log_behavior import logger as log

[....]
log.info('mymessage')

1 个答案:

答案 0 :(得分:0)

据我所知,记录配置是持久的,因此就配置而言,这应适用于所有子模块。

logging.basicConfig(format='%(module)s-%(levelname)s: %(message)s',level=logging.DEBUG)
logger = logging.getLogger('project.logging_behaviour')

此处可找到更多格式选项 https://docs.python.org/2/library/logging.html#logrecord-attributes

我不知道是否有必要,但将你的记录器命名为绝对命名模块是一个好习惯。例。 project.logging_behaviourproject.sub_module.sub_sub_module等。