프로그래밍 언어/Python

Python logger가 로그 파일 외에도 모든 메시지를 stdout에 출력하도록 만들기

Rateye 2021. 11. 1. 10:26
728x90
반응형
질문 : Python 로거가 로그 파일 외에도 모든 메시지를 stdout에 출력하도록 만들기

logging 모듈을 사용하여 파이썬 로깅을 만드는 방법이 있습니까? 가야 할 로그 파일 외에도 stdout에 자동으로 출력하는 방법이 있습니까? 예를 들어, logger.warning , logger.critical , logger.error 에 대한 모든 호출이 의도 한 위치로 이동하고 또한 항상 stdout 복사되기를 바랍니다. 이는 다음과 같은 메시지가 중복되지 않도록하기위한 것입니다.

mylogger.critical("something failed")
print "something failed"
답변

모든 로깅 출력은 핸들러에 의해 처리됩니다.logging.StreamHandler() 를 루트 로거에 추가하기 만하면됩니다.

다음은 스트림 핸들러를 구성하고 (기본 stderr stdout 사용) 루트 로거에 추가하는 예입니다.

import logging
import sys

root = logging.getLogger()
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)
출처 : https://stackoverflow.com/questions/14058453/making-python-loggers-output-all-messages-to-stdout-in-addition-to-log-file
728x90
반응형