Python 로깅 전파

Mehvish Ashiq 2023년6월21일
Python 로깅 전파

이 자습서는 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 avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - Python Logging