/etc/logrotate.d 설정하기

NOVEMBER 06, 2020
/home/jenkins/workspace/V2G-Prod-Server/logs/*log 
/home/jenkins/workspace/V2G-Dev-Server/logs/*log {
    daily                                         
    compress                                      
    dateext                                       
    maxage 365                                    
    notifempty                                    
    missingok                                     
    copytruncate                                  
}                                                 
옵션 설명
rotate 숫자 log 보관 갯수 ex) rotate 5 : log파일이 5개 이상시 삭제
maxage 숫자 log 파일 생명 주기 ex) maxage 20 : 20일 경과시 삭제
size 지정된 용량보다 클 경우 로테이트 실행 ex) size +100k : 100k 이상 시 로테이트
daily 일 단위 파일순환
weekly 주 단위 파일순환
monthly 월 단위 파일순한
missingok 파일이 없어도 상관없음(에러가 아니도록 처리)
notifempty 로그내용이 없으면 로테이트 안함
ifempty 로그 내용이 없어도 로테이트 진행
compress 로그파일을 gzip으로 압축하여 보관
nocompress 압축 안함
dateext rotate된 로그파일명에 날짜 표시
dateyesterday dateext 옵션과 함께 쓰면 파일명의 날짜에 어제 날짜로 저장
copytruncate 이 옵션을 넣지 않으면 현재 사용중인 로그를 다른이름으로 move하고 새로운 파일을 생성한다

# logrotate 수행

  • 설정파일의 오류확인 - debug 모드로 실제 로테이션은 되지 않음

    $ /usr/sbin/logrotate -d /etc/logrotate.d/v2g
  • 설정파일을 강제수행

    $ /usr/sbin/logrotate -f /etc/logrotate.d/v2g

# Cron 등록

syslog가 순환되고 있는 것은 cat /etc/cron.daily/logrotate 파일에 정의되어 crontab에서 실행되고 있다. 로테이션을 위해 생성한 /data/logs/test_logrotate 파일을 /etc/logrotate.d/ 하위에 두면 rsyslog가 로테이션되는 시간에 같이 로테이션 된다. 또는 해당 원하는 시간에 crontab에 추가하여 별도 관리하여도 된다. 1일치 로그로 관리하기 위하여 0시에 순환되도록 아래와 같이 설정한다.

$ sudo crontab -e

0 0 * * * /usr/sbin/logrotate -f /etc/logrotate/v2g

작업 기록 블로그