나는 로그 데이터를 stdout으로 출력하도록 작성한 Go 애플리케이션을 실행하기 위해 매우 간단한 openrc 서비스를 사용하고 있으며 logrorate
애플리케이션의 로그 파일을 활성화할 때까지 애플리케이션은 정상적으로 실행되었습니다. 로그를 회전시키는 것처럼 보이지만 로그 파일이 잘린 후 특정 지점이 지나면 내 Go 애플리케이션이 파일에 대한 로깅을 완전히 중지합니다. 서비스를 다시 시작하면 다시 작동하는 것 같습니다.
내 openrc 서비스 파일:
#!/sbin/openrc-run
name="My Server"
description="My Server Written in Go"
command="/usr/bin/server"
command_args="/etc/${RC_SVCNAME}/${RC_SVCNAME}.conf"
pidfile="/var/run/${RC_SVCNAME}.pid"
command_background="yes"
output_log="/var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"
error_log="/var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"
depend() {
use net localmount logger dns
need net
after keepalived firewall
}
start_pre() {
checkpath --directory /etc/${RC_SVCNAME}
}
내 logrotate
구성.
/var/log/server/*.log {
daily
missingok
notifempty
}
로그 회전을 인식하도록 애플리케이션에 어떤 조치를 취해야 합니까?
답변1
나는 logrotate 전문가는 아니지만 다음과 같이 logrotate에 서비스를 다시 시작하도록 지시할 수 있습니다.
/var/log/server/*.log {
daily
missingok
notifempty
postrotate
/etc/init.d/server --quiet --ifstarted restart || true
endscript
}