Tomcat 서버의 catalina.out 로그 파일에 대해 일일 로그 회전을 설정하려고 하는데 작동하지 않습니다. 회전된 로그 파일이 생성되는 것을 보지 못했습니다.
문제를 해결하기 위해 달렸습니다.logrotate -d /etc/logrotate.conf
다음과 같은 결과를 얻었습니다.
rotating pattern: /usr/local/tomcat/logs/catalina.out 5242880 bytes (7 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/tomcat/logs/catalina.out
log needs rotating
rotating log /usr/local/tomcat/logs/catalina.out, log->rotateCount is 7
dateext suffix '-20151223'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /usr/local/tomcat/logs/catalina.out to /usr/local/tomcat/logs/catalina.out-20151223
truncating /usr/local/tomcat/logs/catalina.out
compressing log with: /bin/gzip
모든 것이 괜찮아 보이고 오류도 없습니다. 그러나 결과가 없습니다.
[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata*
-rw-r--r-- 1 root root 398 Dec 4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log
-rw-r--r-- 1 root root 109M Dec 23 17:21 /usr/local/tomcat/logs/catalina.out
내 거/etc/logrotate.conf
:
daily
rotate 7
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
내 거/etc/logrotate.d/tomcat
:
/usr/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 7
compress
missingok
size 5M
}
뭐가 문제 야?
고쳐 쓰다:
흥미롭게도 달리는 중logrotate -f /etc/logrotate.conf
회전된 gzip 파일을 생성하세요!
[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata*
-rw-r--r-- 1 root root 398 Dec 4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log
-rw-r--r-- 1 root root 1.1M Dec 23 17:26 /usr/local/tomcat/logs/catalina.out-20151223.gz
-rw-r--r-- 1 root root 109K Dec 23 17:27 /usr/local/tomcat/logs/catalina.out
하지만 일일 크론 작업이 작동하는지 어떻게 알 수 있나요?
답변1
logrotate -d /etc/logrotate.conf
인수를 사용하여 실행합니다 -d
.
매개변수 -d
는 디버그 모드, 즉 "모의 실행"이라고 말할 수 있습니다. 로그 회전이 효과적인 경우에만 정보를 제공하지만 로그를 회전하지는 않습니다.
logrotate -f
-f
이는 매개변수가 logrotate를 강제 실행하기 위해 logrotate를 지정하기 때문에 작동합니다.
매뉴얼에서 인용로그 회전:
-d, --디버그
디버그 모드를 켜고 -v를 암시합니다. 디버그 모드에서는 로그 또는 logrotate 상태 파일이 변경되지 않습니다.
-f, --force는 이것이 필요하지 않다고 생각하더라도 강제로 회전하도록 logrotate에 지시합니다. 이는
logrotate 구성 파일에 새 항목을 추가한 후나 이전 로그 파일을 수동으로 삭제한 경우
새 파일이 생성되고 로깅이
올바르게 계속되므로 유용한 경우가 있습니다.
logrotate -d /etc/logrotate.conf
제공된 출력에서 로그가 회전되고 압축될 것임을 나타내는 경우 logrotate는 구성 파일을 반복할 때 로그를 확실히 회전합니다.
답변2
이 질문에 중복된 것으로 알려진 또 다른 질문이 있지만 실제로는 매우 다른 답변이 있습니다.
이 질문에 대한 대답은 Tomcat이 사용자 "루트"로 실행되는 경우에만 작동합니다. 이는 보안이 좋지 않은 관행입니다. 모범 사례로서 Tomcat이 사용자 tomcat:tomcat으로 실행 중인 경우 catalina.out 파일도 tomcat:tomcat의 소유가 됩니다. 이 경우 logrotate는 catalina.out을 회전하지 않습니다.
이 문제를 해결하려면 logrotate 구성에서 사용자 및 그룹 이름을 지정해야 합니다. 따라서 이 경우 /etc/logrotate.d/tomcat을 다음과 같이 수정해야 합니다.
/usr/local/tomcat/logs/catalina.out {
su tomcat tomcat
copytruncate
daily
rotate 7
compress
missingok
size 5M
}
답변3
/etc/logrotate.d/tomcat에서 informempty를 시도하십시오.