Python 프로그램 로그의 용량이 쌓이는 문제 해결: RotatingFileHandler
- 자동 파일 로테이션: 지정된 크기에 도달하면 자동으로 새 파일 생성
- 백업 파일 관리: 이전 로그 파일들을 자동으로 백업
- 디스크 공간 효율성: 로그 파일 크기 제한으로 디스크 공간 관리
- 간단한 설정: 최대 파일 크기와 백업 파일 수만 지정하면 됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from logging.handlers import RotatingFileHandler
import logging
def setup_logger():
# 로거 생성
logger = logging.getLogger('MyApp')
logger.setLevel(logging.INFO)
# RotatingFileHandler 설정
handler = RotatingFileHandler(
'app.log', # 로그 파일명
maxBytes=10*1024*1024, # 최대 파일 크기 (10MB)
backupCount=5, # 백업 파일 수
encoding='utf-8' # 인코딩 설정
)
# 포맷 설정
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# 핸들러 추가
logger.addHandler(handler)
return logger
- 기본 파일: app.log
- 첫 번째 백업: app.log.1
- 두 번째 백업: app.log.2
- …
- filename: 로그 파일의 이름
- maxBytes: 각 로그 파일의 최대 크기 (바이트)
- backupCount: 유지할 백업 파일의 수
- encoding: 파일 인코딩 (기본값: None)
- 자동 관리: 수동으로 로그 파일을 관리할 필요가 없음
- 공간 효율: 디스크 공간을 효율적으로 사용
- 로그 보존: 중요한 로그 데이터를 백업으로 보존
- 간단한 구현: 몇 줄의 코드로 구현
- maxBytes는 적절한 크기로 설정해야 함
- backupCount는 디스크 공간을 고려하여 설정
- 백업 파일도 디스크 공간을 사용함을 고려
1
2
3
4
5
6
7
# 로거 사용 예시
logger = setup_logger()
# 로그 기록
logger.info('애플리케이션 시작')
logger.error('오류 발생')
logger.warning('경고 메시지')
결론 RotatingFileHandler는 Python 애플리케이션에서 로그 파일을 효율적으로 관리하는 강력한 도구입니다. 자동 파일 로테이션과 백업 관리 기능으로 디스크 공간을 효율적으로 사용하면서도 중요한 로그 데이터를 안전하게 보존할 수 있습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
