我正在将python 2.7用于多模块项目。如here所述,我已经在main.py中配置了登录,如下所示:
logging.basicConfig(
format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
datefmt='%d-%m-%Y:%H:%M:%S',
filename='/home/ubuntu/logs/centralized_upgrade.log',
level=logging.INFO)
在其他任何我必须登录的模块中,我都像下面这样打电话
import logging
...
logging.info('Hello World')
但是我的疑问是,是否在某个模块中再次重新配置了根记录器(可能如下所示)
logging.basicConfig(
format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
datefmt='%d-%m-%Y:%H:%M:%S',
filename='/home/ubuntu/logs/module.log',
level=logging.INFO)
然后所有日志消息将开始进入新文件。有人可以让我知道处理此问题的最佳方法是什么?如何防止重新配置root记录器?我的意图是,无论在任何子模块中进行任何重新配置,日志记录配置都应保持与main.py
中定义的相同。
在许多地方,建议不要使用root记录器,而是像here那样定义记录器。但是根据我的理解,在这种情况下,如果某个模块配置了根记录器,那么由于所有记录器都是从根记录器继承的,因此日志可能会转到另一个文件。
答案 0 :(得分:0)
在此处发布@Lukas Graf的评论作为答案
不是完整的答案,但是:
logging.basicConfig
不会做任何事情 如果根记录器已经为它配置了处理程序。所以如果 多次调用,只有第一个会应用给定的 配置到根记录器。