我正在使用Python日志记录,由于某种原因,我的所有消息都出现了两次。
我有一个配置日志记录的模块:
# BUG: It's outputting logging messages twice - not sure why - it's not the propagate setting.
def configure_logging(self, logging_file):
self.logger = logging.getLogger("my_logger")
self.logger.setLevel(logging.DEBUG)
self.logger.propagate = 0
# Format for our loglines
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Setup console logging
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
self.logger.addHandler(ch)
# Setup file logging as well
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
self.logger.addHandler(fh)
稍后,我调用此方法来配置日志记录:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
然后,在buy_ham模块中,我将调用:
self.logger.info('Successfully able to write to %s' % path)
由于某种原因,所有消息都出现两次。我注释掉其中一个流处理程序,还是一样。有点奇怪,不确定为什么会这样...大声笑。假设我错过了一些显而易见的事情。
干杯,维克多
self.logger.handlers = [ch]
替代方法可以解决此问题,尽管最好是确保不要通过例如if not self.logger
在开始时使用两次来运行此代码。
configure_logging()
不会被调用两次(例如,也从构造函数调用过)吗?仅创建Boy()的一个实例吗?