私はPythonロギングを使用しています。何らかの理由で、すべてのメッセージが2回表示されます。
ロギングを構成するモジュールがあります。
# 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)
そして、何らかの理由で、すべてのメッセージが2回表示されます。ストリームハンドラの1つをコメントアウトしましたが、まだ同じです。ちょっと奇妙なもの、なぜこれが起こっているのかわからない...笑 私は明らかな何かを見逃したと仮定します。
乾杯、ビクター
self.logger.handlers = [ch]
代わりにを使用すると、この問題は解決しますが、たとえば、if not self.logger
最初に使用することによって、このコードを2回実行しないようにするのが最善です。
configure_logging()
(例えばコンストラクタからも)2度呼び出されないことは確かですか?Boy()のインスタンスは1つだけ作成されますか?