我有一个项目包含我想登录到同一位置的几个模块。我已经设置了一个特定的模块,例如log.py
,我已经指定了格式化规则和我希望写入日志的位置。模块之间的Python共享记录器配置
到现在为止我一直在进口我在log.py
创建到使用它需要的模块记录器,并从那里调用它们,如python logging howto
指定的现在,我希望每一个模块I导入改变我的记录器的名字它进入,以便能够从哪个模块中得知特定的消息。
什么是最好的方法来做到这一点?我应该继承我的记录器,并重新定义记录器的名称与模块的__name__
有没有更好的方法来做到这一点?
这里是我的记录器定义的一个要素:
logger = logging.getLogger('main_logger')
logger.setLevel(logging.DEBUG)
下面是我如何使用它的例子:我反正这样就知道
from log_behavior import logger as log
[....]
log.info('mymessage')
问题是我首先用'logging.getLogger('my_logger')'创建一个记录器,然后配置该记录器。没有它,我不能设置处理程序。我想对这个配置进行分类,只是改变名称,但在每个模块中调用整个配置例程有点长。 – chiffa
我说的是从日志记录中创建一个全局basicConfig,并且应该坚持记录您创建后的记录。只要在要登录的每个模块中导入日志记录,甚至不需要多次导入logging_behaviour。在日志记录中设置配置而不是按日志记录器应该可以解决该问题。 – OnGle
问题是,对我来说basicConfig没有提供足够的选项,所以我必须使用为记录器实例保留的方法。我想最后我会导入一个记录器生成功能,无论我需要它。 – chiffa