파이썬의 logging 모듈을 사용하여 로그 파일을 일자별로 생성하려면, TimedRotatingFileHandler를 사용하는 것이 좋습니다. 이 핸들러는 지정된 간격에 따라 로그 파일을 새로 만들고, 이전 로그 파일의 이름 뒤에 타임스탬프를 붙여 구분합니다. 일자별 로그 파일 생성을 위한 사용자 정의 로깅 클래스 예시는 다음과 같습니다.

 

import logging
from logging.handlers import TimedRotatingFileHandler
import os

class DailyLogger:
    def __init__(self, name, log_dir='logs', level=logging.DEBUG):
        # 로그 파일 디렉터리 확인 및 생성
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)
        
        # 로그 파일 경로 설정
        log_file_path = os.path.join(log_dir, f"{name}.log")
        
        # 로거 생성 및 레벨 설정
        self.logger = logging.getLogger(name)
        self.logger.setLevel(level)
        
        # 일자별로 로그 파일을 생성하는 핸들러 설정
        file_handler = TimedRotatingFileHandler(log_file_path, when="midnight", interval=1, backupCount=7)
        file_handler.setLevel(level)
        
        # 로그 포맷 설정
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        
        # 핸들러를 로거에 추가
        self.logger.addHandler(file_handler)
        
    def get_logger(self):
        """
        구성된 로거 객체 반환
        """
        return self.logger

 

이 클래스는 로그 파일을 매일 자정에 새로 생성하도록 설정됩니다. backupCount=7은 로그 파일을 최대 7개까지 보관하고, 이를 초과하면 가장 오래된 파일부터 삭제한다는 것을 의미합니다. 로그 디렉터리는 생성자에서 log_dir 인자를 통해 지정할 수 있으며, 기본값은 현재 작업 디렉터리 내의 logs 폴더입니다.

사용 예시는 다음과 같습니다:

# DailyLogger 인스턴스 생성 및 로거 가져오기
daily_logger = DailyLogger(name='MyDailyLogger', log_dir='my_logs', level=logging.INFO).get_logger()

# 로깅 메시지 기록
daily_logger.info('정보 메시지입니다.')

 

이 코드를 실행하면, my_logs 디렉터리 내에 MyDailyLogger.log 파일이 생성되고, 매일 자정마다 새로운 로그 파일로 전환됩니다. 파일 이름은 자동으로 날짜가 추가되어 구분됩니다.

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

Custom Logger 만들기 1  (0) 2024.03.29
logging 설정하는 방법  (0) 2024.03.14

+ Recent posts