Logrotate :“로그는 회전 할 필요가 없습니다”왜?


57

다음과 같은 새로운 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과 같은 새로운 파일이 생성되었을 것입니다.


또한 -d 옵션을 사용하면 IT가 로그를 회전시키지 않습니다. 게임 계획과 같이 옵션없이 실행해야하는 것을 보여줍니다. 나는 그들이 회전하는 것을 볼 수 있다고 생각했을 때 심각한 두통을 일으켰고 여전히 거기에있었습니다.
Maxwell Flanders

답변:


64

대부분의 경우 로그 파일이 하루보다 작거나 마지막 날에 회전했으며 logrotate가 기록을 기억합니다.

추가 -f하면 실제로 원한다면 회전을 강제합니다 (100 %와 어떻게 상호 작용하는지 확실하지는 않지만 -d).

당신은 역사를 볼 수 있습니다, 위치는 배포판에 따라 다를 수 있습니다 /var/lib/logrotate/status. 이 파일은 로그가 마지막으로 회전 된 시간을 보여줍니다.


4
FreeBSD에서 그것은 /var/run/logrotate.status
kaleissin입니다.

또한 상태 파일 위치에 대한 호출에서 -s 인수가 가능한지 확인하십시오.
JGurtz

2
-d+ -f모든 파일에 대해 로그 로테이션 보고서를 "회전해야합니다", 심지어 일치하지 않는 파일도 포함
Fluffy

여기에 상태 파일의 날짜를 순환 정책보다 오래된 것으로 편집 logrotate하면 로그가 다시 실행될 때 회전해야한다는 것을 확신 할 수 있습니다.
Centimane

CentOS에서는 logvarate가 작동하도록 /var/lib/logrotate.status를 수정했습니다. EightBitTony에서 알 수 있듯이 매일 로그 로테이션은 기록을 기억합니다. 파일이 과거에 날짜가있는 기록에 있지 않으면 logrotate는 파일을 회전시키지 않습니다.
마크

58

새로운 로그 구성으로 logrotate를 처음 실행하면 마지막 로그 회전이 언제 발생했는지 알 수 없으므로 /var/lib/logrotate/status현재 실행 된 결과 에 상태 줄만 기록합니다 .

이후에 다음 날에 실행되면 로그가 오래되어 예상대로 회전합니다. 기다리지 않으려면 logrotate의 상태 파일을 편집하고 로그의 상태 날짜를 전날로 거슬러 올립니다.

logrotate를 수동으로 실행하면 예상대로 작동합니다.


5

때로는 logrotate를 수동으로 실행하더라도 같은 날에 수행하고 dateext기본값에 sencond가 포함되어 있지 않은 경우 작동하지 않습니다 (예 :) -%Y%m%d. logrotate의 상태 파일을 수정하거나 size 지시문 (예 :)을 사용하는 경우에도 마찬가지 size 200M입니다. 적어도 CentOS 6에서는 logrotate가 이미 존재하기 때문에 로그 파일을 회전시키는 데 실패합니다.

이 문제를 해결하려면 다음 과 같은 값 dateformat으로을 대신 사용해야 합니다 .dateext%Y%m%d%s

자세한 내용 man logrotate은 참조하십시오.


1

다음을 실행하여주의하십시오

logrotate -vdf /etc/logrotate.conf

시뮬레이션 된 이벤트 만 기록 /var/lib/logrotate.status 되고 후속 로그 회전 실행이 언급 된대로 응답합니다.

log does not need rotating

1
우분투 (16.04 및 17.04)에서는 재현 할 수 없습니다. "/var/lib/logrotate.status"를 사용하는 경우 다른 배포판을 사용해야합니다. 우분투는 "/ var / lib / logrotate / status"에 기록합니다.
Philipp Claßen

2
@Philipp Claßen : /var/lib/logrotate.statusdocker 컨테이너 내의 Alpine linux 3.5에서 Logrotate 3.10의 구성을 디버깅하는 동안 이 (상태 파일이 위치 )가 관찰되었습니다. 그러나 질문 정의에 우분투 플래그가 없습니까?
helvete

1
예, 괜찮습니다. 우분투가 너무 인기가 있기 때문에 언급하겠습니다. 많은 사람들이 오늘날 우분투에서 실행되는 서버를 수정하려고하기 때문에이 질문을 읽은 것으로 가정합니다.
Philipp Claßen

1
네 맞습니다. 완료하려면 Centos 7 배포판에서 상태 파일의 위치가 다음 위치에 있음을 추가 할 수 있습니다./var/lib/logrotate/logrotate.status
helvete
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.