우리는 로그 파일을 회전하기 위해 Linux logrotate를 사용합니다.
예:
/location/tomcat/logs/* /location/jboss/log/* {
copytruncate
daily
rotate 10
compress
size 20M
olddir rotated
create 0644 test test
}
LINUX에 제공된 복사 잘림 정의에 따르면,
copytruncate
Truncate the original log file in place after creating a copy,
instead of moving the old log file and optionally creating a new
one, It can be used when some program can not be told to close
its logfile and thus might continue writing (appending) to the
previous log file forever. Note that there is a very small time
slice between copying the file and truncating it, so some log-
ging data might be lost. When this option is used, the create
option will have no effect, as the old log file stays in place.
따라서 순환 중에 로그 파일의 데이터가 손실됩니다. 약 5~20초 정도 로그가 손실된 것으로 나타났습니다. 데이터 손실 없이 동일한 프로세스를 수행할 수 있는 방법/구성이 있습니까?
답변1
syslog-ng에서는 변수를 사용하고 날짜와 같은 항목을 포함하도록 출력 파일 이름을 설정할 수 있으므로 손실 없이 새 날 오전 12시에 자동으로 새 파일 쓰기를 시작할 수 있다는 것을 알고 있습니다.
그러나 syslog 프로그램을 syslog-ng로 변경해야 합니다. 하지만 유연성이 꼭 필요한 것 같습니다.
답변2
.set log/entry size를 사용하거나 다음을 logrotate
사용하여 로그 파일 로깅 및 회전에서 전환할 수 있습니다.journald
systemd-cat -t indentifier cmdline
/etc/systemd/journald.conf
journalctl --vacuum-size=, --vacuum-time=, --vacuum-files=
또 다른 방법은 logrotate
사전 회전/사후 회전 기능을 사용하여 하루에 한 번씩 서버를 중지하고 로그를 회전한 다음 서버를 다시 시작하는 것입니다. 로그 회전 시간은 systemd logrotate.timer
또는 (ana)cron 작업에 따라 다르며 오전 4시 또는 트래픽이 0만큼 낮은 시간으로 예약할 수 있습니다.
prerotate
# stop jboss/tomcat server
endscript
daily
rotate 10
compress
size 20M
postrotate
#start servers
endscript
답변3
이것이 내가 로그로 하는 일입니다 Catalina
:
/var/log/tomcat/catalina.out {
daily
size 100m
compressext .gz
compress
delaycompress
compressoptions "-9"
dateformat -%Y%m%d-%s
ifempty
copytruncate
prerotate
SIZE=$(stat --printf='%s' /var/log/tomcat/catalina.out)
/bin/bash -c "tail -c +$SIZE -f /var/log/tomcat/catalina.out > /var/log/tomcat/tmp.log" &
endscript
postrotate
pgrep tail | xargs kill -9
cat /var/log/tomcat/tmp.log >> /var/log/tomcat/catalina.out
rm /var/log/tomcat/tmp.log -f
endscript
}
선택적으로 명령 자체의 새로 고침 간격을 줄이기 위해 -s
with를 지정할 수 있습니다 . 그리고 옵션을 사용하기 때문에 속도가 빠릅니다.tail
tail
-c