logrotate는 리눅스와 유닉스 계열 시스템에서 로그 파일을 관리하는 데 사용되는 표준 유틸리티입니다. 시스템의 로그 파일은 시간이 지남에 따라 크기가 계속 증가할 수 있으므로, logrotate를 사용하여 로그 파일을 자동으로 회전(rotate), 압축, 삭제, 메일 전송 등을 할 수 있습니다. 이를 통해 디스크 공간을 절약하고 로그 파일의 관리를 용이하게 합니다.logrotate는 정해진 크기에 도달하거나 특정 기간이 지나면 로그 파일의 이름을 변경하고 새로운 로그 파일을 생성합니다. 예를 들어, messages.log 파일이 주기적으로 messages.log.1, messages.log.2 등으로 이름이 바뀌고 새로운 messages.log 파일이 생성됩니다.logrotate를 통해 로그 파일이 보관될 기간, 로그 파일의 최대 개수, 압축 여부 등을 설정할 수 있습니다.logrotate는 일반적으로 cron 작업을 통해 매일 또는 매주 자동으로 실행됩니다.logrotate의 구성은 일반적으로 /etc/logrotate.conf 파일과 /etc/logrotate.d/ 디렉토리 안의 다양한 구성 파일을 통해 이루어집니다. /etc/logrotate.conf는 글로벌 설정을 정의하고, /etc/logrotate.d/ 디렉토리 안의 파일들은 개별 서비스나 애플리케이션에 대한 구체적인 로그 회전 설정을 담고 있습니다.daily, weekly, monthly: 로그 파일이 회전되는 주기를 설정합니다.rotate <count>: 로그 파일이 유지될 세대(generation)의 수를 설정합니다.size <size>: 로그 파일이 특정 크기에 도달하면 회전합니다.compress: 오래된 로그 파일을 압축합니다.missingok: 로그 파일이 없어도 에러를 발생시키지 않습니다.notifempty: 비어 있지 않은 경우에만 로그 파일을 회전합니다.create <mode> <owner> <group>: 새 로그 파일을 지정된 모드, 소유자, 그룹으로 생성합니다.postrotate/endscript: 로그 회전 후에 실행할 스크립트를 정의합니다.# 기본 설정 파일을 사용하여 logrotate를 실행합니다.
logrotate /etc/logrotate.conf
# 강제로 로그 파일을 회전합니다.
logrotate --force /etc/logrotate.conf
# 디버그 모드를 사용하여 로그 회전을 테스트합니다.
logrotate --debug /etc/logrotate.conf
# /etc/logrotate.conf 또는 /etc/logrotate.d/에 위치할 수 있는 사용자 정의 설정 파일 예시
# 로그 파일 경로
/var/log/myapp/*.log {
# 매일 로그 파일을 회전
daily
# 로그 파일을 7개까지 보관
rotate 7
# 로그 파일 압축
compress
# 로그 파일이 비어 있어도 회전
notifempty
# 로그 파일 작성 프로그램에게 새 로그 파일을 사용하도록 알림
create 640 root adm
# 로그 파일 회전 후 실행할 스크립트 또는 명령
postrotate
/usr/bin/killall -HUP myapp
endscript
}
# 또 다른 로그 파일 경로
/var/log/anotherapp/*.log {
weekly
rotate 4
compress
missingok
notifempty
create 660 root adm
}
https://linux.die.net/man/8/logrotate