Python 로깅 전파
Mehvish Ashiq
2023년6월21일
이 자습서는 LevelFilter
를 사용하여 특정 수준 이상의 특정 로거 이름(예: INFO
이상)의 메시지를 특정 로그 처리기에 기록하는 방법을 보여줍니다.
Python 로깅 전파
우리는 이미 logging
모듈, 그 중요성, 다양한 로깅 수준에 대해 설명하고 logging
모듈의 로컬 및 글로벌 사용을 보여주는 문서를 작성했습니다. 여기서는 현재 로거 수준 아래 수준의 특정 메시지를 전파하는 방법을 알아봅니다.
그게 무슨 뜻이야? 이는 우리가 특정 로그 처리기(스트림 처리기 또는 파일 처리기로 가정)에 특정 수준 이상(INFO
이상)의 특정 로거 이름 메시지를 기록하고자 함을 의미합니다.
예제 코드:
import logging
class LevelFilter(logging.Filter):
def __init__(self, level):
self.level = level
def filter(self, record):
return record.levelno >= self.level
def perform_logging(turn):
logger = logging.getLogger("extra")
logger.info("some information turn %d" % turn)
logger.debug("this is the debug fudge turn %d" % turn)
rootLogger = logging.getLogger()
handler = logging.StreamHandler()
rootFormatter = logging.Formatter("root - %(levelname)s: %(msg)s")
handler.setFormatter(rootFormatter)
rootLogger.addHandler(handler)
rootLogger.setLevel(logging.DEBUG)
perform_logging(1)
extraLogger = logging.getLogger("extra")
extraHandler = logging.StreamHandler()
extraFormatter = logging.Formatter("extra - %(levelname)s: %(msg)s")
extraHandler.setFormatter(extraFormatter)
extraLogger.addHandler(extraHandler)
extraHandler.addFilter(LevelFilter(logging.INFO))
extraLogger.setLevel(logging.DEBUG)
perform_logging(2)
출력:
root - INFO: some information turn 1
root - DEBUG: this is the debug fudge turn 1
extra - INFO: some information turn 2
root - INFO: some information turn 2
root - DEBUG: this is the debug fudge turn 2
이 예에서는 루트
로거와 명명된 로거(여기서는 추가
)라는 두 개의 로거를 만듭니다.
root
로거에 logging.StreamHandler
를 연결하고 로그 수준을 logging.DEBUG
로 설정합니다. 그런 다음 명명된 로거에 처리기를 연결하고 로깅 수준을 logging.INFO
로 설정합니다.
이제 요점은 현재 수준 아래의 특정 수준의 메시지를 전파하는 방법입니다. 이를 위해 LevelFilter
를 사용하여 특정 수준만 허용하는 모든 핸들러에 필터를 추가합니다.
작가: Mehvish Ashiq