파이썬에서 로깅(logging)은 애플리케이션의 실행 상태에 대한 정보를 기록하는 중요한 기능입니다. logging 모듈을 사용하면 콘솔, 파일, 웹 서버 등 다양한 대상에 로그를 출력할 수 있습니다. 사용자 정의 로깅 클래스를 만드는 기본적인 예시입니다.

 

먼저, 파이썬의 logging 모듈을 사용하여 로거(logger), 핸들러(handler), 포매터(formatter)를 설정하는 사용자 정의 클래스를 만듭니다. 이 클래스는 로깅을 쉽게 설정하고 사용할 수 있도록 도와줍니다.

 

import logging

class MyLogger:
    def __init__(self, name, level=logging.DEBUG, file_name='app.log'):
        # 로거 생성
        self.logger = logging.getLogger(name)
        self.logger.setLevel(level)  # 로그 레벨 설정
        
        # 파일 핸들러 생성 및 설정
        file_handler = logging.FileHandler(file_name)
        file_handler.setLevel(level)
        
        # 콘솔 핸들러 생성 및 설정
        console_handler = logging.StreamHandler()
        console_handler.setLevel(level)
        
        # 로그 포맷 설정
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        console_handler.setFormatter(formatter)
        
        # 핸들러를 로거에 추가
        self.logger.addHandler(file_handler)
        self.logger.addHandler(console_handler)
    
    def get_logger(self):
        """
        구성된 로거 객체 반환
        """
        return self.logger

 

이 클래스를 사용하여 로깅을 설정하고 메시지를 기록하는 방법은 다음과 같습니다:

# MyLogger 인스턴스 생성
my_logger = MyLogger(name='MyAppLogger', level=logging.INFO).get_logger()

# 로깅 메시지 기록
my_logger.debug('디버그 메시지입니다.')
my_logger.info('정보 메시지입니다.')
my_logger.warning('경고 메시지입니다.')
my_logger.error('에러 메시지입니다.')
my_logger.critical('치명적인 에러 메시지입니다.')

 

이 코드는 MyAppLogger라는 이름의 로거를 생성하고, 로그 메시지를 파일(app.log)과 콘솔에 출력합니다. 로그 메시지에는 발생 시간, 로거 이름, 로그 레벨, 메시지가 포함됩니다.

로깅 레벨은 다음과 같은 순서로 정의됩니다: DEBUG < INFO < WARNING < ERROR < CRITICAL. level 파라미터를 통해 설정한 레벨 이상의 메시지만 출력됩니다. 위 예시에서는 level=logging.INFO로 설정했기 때문에, debug 메시지는 출력되지 않습니다.

'python > logging' 카테고리의 다른 글

Custom Logger 만들기 2 (일자별로 log 파일 생성)  (0) 2024.03.29
logging 설정하는 방법  (0) 2024.03.14

+ Recent posts