使用 openrc 和 logrotate 会导致日志记录在 Alpine Linux 上停止工作

使用 openrc 和 logrotate 会导致日志记录在 Alpine Linux 上停止工作

我正在使用一个非常普通的 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
}

相关内容