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 () 인스턴스가 하나만 생성됩니까?