openrc と logrotate を使用すると、Alpine Linux でのロギング動作が停止します。

openrc と logrotate を使用すると、Alpine Linux でのロギング動作が停止します。

私はログデータを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
}

関連情報