다음과 같은 액세스 로그 구성이 있습니다.
cat /etc/logrotate.d/logrotate_nginx.conf
/nginx/access/logs/*.log {
rotate 2
size 1k
missingok
compress
notifempty
copytruncate
}
시간 간격 구성이 없습니다.
이는 1KiloByte에 도달한 후 "/nginx/access/logs/"에서 로그를 회전한다는 의미입니다. 그렇죠?
하지만 지금은 로그 회전입니다.
/ # ls -l /nginx/access/logs/
total 8
-rw-r--r-- 1 root root 1264 Jun 24 11:17 nginx-access.log
-rw-r--r-- 1 root root 1292 Jun 24 11:17 nginx-access_withbody.log
-rw-r--r-- 1 root root 0 Jun 24 11:16 nginx-error.log
이것은 logrotate.status입니다.
/ # cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/acpid.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-error.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-access.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-access_withbody.log" 2019-6-24-11:0:0
왜 회전하지 않는지 알고 싶습니다. 문제가 conf에 있는 경우. 문서에 따르면
이 옵션은 상호적입니다. 간격 옵션과 상호 배타적이며 로그가 발생합니다. 시간 조건 뒤에 지정하면 회전할 파일은 마지막 회전 시간을 고려하지 않습니다.
답변1
포함된 파일을 보면 logrotate.status
로그가 마지막으로 회전된 시간이 11:00인 것으로 나타나며 디렉터리 목록을 보면 그 이후에 파일이 업데이트되었음을 확인할 수 있습니다.
logrotate
이는 작업이 매시간 실행된다는 의미일 수 있습니다 . 로그 순환 작업이 다시 실행되거나 수동으로 실행되면 로그가 순환되어야 합니다.
답변2
Alpine Linux에서는 cron이 기본적으로 시작되지 않습니다. 따라서 어떤 폴더의 작업도 실행되지 않습니다. 해결책은 cron을 시작하는 것입니다crond