我有一个包含多个模块的项目我希望登录到同一个位置。我已经设置了一个特定的模块,比如说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')
答案 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_behaviour
,project.sub_module.sub_sub_module
等。