다음과 같은 새로운 logrotate 구성이 있습니다.
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
내가 실행하면 logrotate -d nexus
다음을 얻습니다.
reading config file nexus
reading config info for /var/log/nexus/nexus.log
Handling 1 logs
rotating pattern: /var/log/nexus/nexus.log after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
log does not need rotating
내 /var/log/nexus/ 폴더에는 다음 내용이 포함되어 있습니다.
nexus.log
oldlogs.tar.gz
LogRotate가 nexus.log 파일을 회전하지 않는 이유는 무엇입니까? 내가 예상하는 것은 nexus.log 파일이 잘리고 새 파일(예: nexus.log-201106241000)이 생성된다는 것입니다.
답변1
대부분의 경우 로그 파일은 하루가 지나지 않았거나 마지막 날에 회전되었으며 logrotate는 기록을 기억합니다.
추가하면 -f
정말로 원할 경우 회전이 강제됩니다(그러나 그것이 어떻게 상호 작용하는지 100% 확신할 수는 없습니다 -d
).
기록을 볼 수 있으며 위치는 배포판에 따라 다르지만 아마도 /var/lib/logrotate/status
. 이 파일은 로그가 마지막으로 순환된 시간을 표시합니다.
답변2
새로운 로그 구성으로 logrotate를 처음 실행하면 마지막 로그 회전이 언제 발생했는지 알 수 없으므로 /var/lib/logrotate/status
오늘 실행되었음을 나타내는 상태 줄만 작성합니다.
다음 날 실행되면 로그가 하루가 지난 것을 확인하고 예상대로 회전합니다. 기다리지 않으려면 logrotate의 상태 파일을 편집하고 로그의 상태 날짜를 전날로 복원하세요.
logrotate를 수동으로 실행하면 예상대로 작동합니다.
답변3
dateext
때로는 logrotate를 수동으로 실행하더라도 같은 날 실행하고 기본값에 초가 포함되어 있지 않으면 -%Y%m%d
작동하지 않습니다 (예: ). logrotate의 상태 파일을 수정하거나 크기 지시문(예: )을 사용하는 경우에도 size 200M
마찬가지입니다 . 적어도 CentOS 6에서는 logrotate가 로그 파일이 이미 존재하기 때문에 회전할 수 없습니다.
이 문제를 해결하려면 다음 값과 함께 , dateformat
대신 을 사용해야 합니다 .dateext
%Y%m%d%s
자세한 내용은 을 참조하세요 man logrotate
.
답변4
참고로 실행하면
logrotate -vdf /etc/logrotate.conf
이벤트를 시뮬레이션할 뿐이지만 이벤트가 기록되고 /var/lib/logrotate.status
후속 logrotate 실행이 위의 내용에 응답합니다.
log does not need rotating