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