我正在使用一个非常普通的 openrc 服务来运行我编写的 Go 应用程序,该应用程序将日志数据输出到 stdout,在我启用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
}