Logrotate: "로그를 회전할 필요가 없습니다." 왜 그렇습니까?

Logrotate: "로그를 회전할 필요가 없습니다." 왜 그렇습니까?

다음과 같은 새로운 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

관련 정보