私のチームが最近リリースした Rails アプリのログを自動的にローテーションするようにサーバーをセットアップする方法について、何日もオンラインで検索してきました。私は走れるようになっsudo logrotate -f /etc/logrotate.conf
たが、もちろん、誰がいつもそれをしたいですか?
アプリのログの構成ファイルの内容 (さらに追加したいのですが、まだ 1 つのファイルをローテーションできないため、その必要はありません):
/path/to/app/production.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}
/etc/logrotate.conf
ファイルに次の行が含まれていることを確認しました。
include /etc/logrotate.d
しかし、これは私がどこに行くべきかよくわからない部分です。実際にプロセスを自動化するためのさまざまなアプローチを見つけましたが、どれも機能していないようです。記録のために、サーバーにanacron
コマンドがインストールされていることを確認しましたが、自分のプロセス用に構成する方法がわかりません。また、root はまだサーバーに crontab を持っていません (私たちはそれを必要としませんでした) /etc/crontab
。ファイルに、/etc/crontab
次を追加しました。
15 0 * * * root cd / && run-parts --report /etc/cron.daily
しかし、私は他の人が使用しているのを見ました
15 0 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
後者はより良い選択肢ですか?なんで?もしそうなら、どうすればそれが機能することを確認できますか? 繰り返しますが、当面のタスクにanacronを設定する方法がわかりません。
最後に、/etc/cron.daily/logrotate
ファイルの以前の内容は次のとおりです。
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
そして、いくつかの調査の後、私はそれをこれに置き換えました(私はもう少しよく理解しています):
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
誰かが最初の構成が何をしていたのか、これら2つのオプションのどちらが優れているかを説明できますか? 実行するためだけにこのプロセスを強制しなければならない理由がわかりません。/etc/crontab
思うように動かないかも?