📌 Log Rolling이란?

info

Log Rolling은 로그 파일의 크기 또는 시간을 기준으로
기존 로그 파일을 백업하고 새 로그 파일로 교체하는 프로세스이다.
로그 파일이 과도하게 커지는 것을 방지하고, 디스크 공간 관리 및 로그 분석을 용이하게 한다.


✅ Log Rolling의 역할

  • 로그 파일 크기 제한을 통해 디스크 사용 최적화
  • 오래된 로그를 자동 보관 또는 삭제
  • 운영 중인 시스템에서 지속적인 로그 수집 가능
  • 시스템 장애 분석, 보안 감사 등의 로그 분석 효율성 향상

✅ Rolling 방식

🔹 1. 크기 기반 Rolling (Size-Based)

설정한 최대 크기를 초과하면 새 로그 파일 생성

  • 예: app.log가 10MB 초과 → app.log.1, app.log.2 등으로 백업
logging.file.max-size=10MB
logging.file.max-history=30

🔹 2. 시간 기반 Rolling (Time-Based)

일정 주기마다 새 로그 파일로 자동 전환

  • 일별/주별/월별 등 주기 설정 가능
  • 예: 하루가 지나면 app-2024-05-07.log 등으로 저장
<rollingPolicy class="TimeBasedRollingPolicy">
    <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
</rollingPolicy>

🔹 3. 혼합 기반 Rolling (Size + Time Hybrid)

로그 크기와 시간 조건 중 어느 하나라도 충족 시 롤링 수행

  • 유연한 로그 관리 정책 가능
  • Spring Boot, Logback 등에서 설정 가능

✅ Spring Boot + Logback 적용 예시

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/app-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxHistory>7</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%d %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

✅ 관련 도구 및 기술

도구 설명
Logback Spring Boot 기본 로깅 프레임워크
Log4j2 고성능 로깅, 다양한 설정 지원
Crontab 수동 로그 삭제 및 스케줄링 가능
logrotate(Linux) 시스템 로그 자동 롤링 및 압축 도구

연결문서

댓글남기기