現在、Ruby on RailsアプリケーションサーバーでUbuntu 12.04 LTSを14.04 LTSにアップグレードしており、ログファイルが循環しなくなったことを確認しています。
/var/app-name/config/logrotate
deployer
両方のシステムには、次の有効なlogrotateファイルを含むunixユーザー所有のファイルがあります。
/var/app-name/log/*.log {
daily
rotate 365
delaycompress
compress
dateext
dateformat -%Y%m%d
missingok
copytruncate
}
/etc/logrotate.d/
次に、次のようにディレクトリにシンボリックリンクします。app-name
Ubuntu 12.04サーバーにはlogrotate 3.7.8があり、うまく機能します。var/app-name/log/
ディレクトリに移動してすべてのログファイルを回転させます。
ただし、Ubuntu 14.04サーバーにはlogrotate 3.8.7があり、アプリケーションのログファイルは回転しません。
デバッグすると、sudo logrotate -d -f /etc/logrotate/.conf
次の結果が表示されます。
Ignoring /etc/logrotate.d/app-name because the file owner is wrong (should be root).
コードでこれを追跡すると、この変更が3.8.xリリースストリームに追加されたようです。https://github.com/demands/logrotate/commit/b8ce386a969c60e5c8ee78023c24a1ba0aab1526
/var/app-name/config/logrotate
シンボリックリンクを持つファイルの所有権を変更すると、再びroot
機能し始めます。しかし、このファイルが私のアプリケーションの一部であり、この状態で使用するcapistrano配布フレームワークによって生成されたことを考慮すると、過去に正しく機能していた所有権を変更する必要はありません。
もしそうなら、logrotateはシンボリックリンク設定ファイルを推奨/サポートしますか?
もしそうなら、(所有している)ディレクトリ内の私のファイルへのdeployer
シンボリックリンクの使用を拒否し、エラーと見なすべきですか?/etc/logrotate.d
または、アプリケーション固有のログローテーションを実行する別の推奨方法はありますか?
(また質問スーパーユーザー StackExchange)