ロギング情報をログファイルに継続的に書き込むLinuxアプリケーションがあります。/var/log/application.log
。アプリケーションがファイルを自動的にローテーションしないため、このログファイルは数週間でギガバイトのサイズに達する可能性があるため、このファイルを適切にローテーションできるようにしたい
ここでの主な懸念は、アプリケーションによって常に開かれているファイルをローテーションするには、おそらく次のことを行う必要があるということです。
ファイルを回転された形式に移動します
/var/log/application.log -> /var/log/application.log.2013-01-28
空のを作成します
/var/log/application.log
。Obs:この時点で、申請プロセスはまだ書き込み中です/var/log/application.log.2013-01-28
アプリケーションプロセスのファイル記述子を変更して、再びポイントするようにします。
/var/log/application.log
それで、私は正しいですか?もしそうなら、どうすればこれを行うことができますか?(主にファイル記述子部分の変更)
そうでない場合、正しい方法とその方法を教えてください。
ファイルをクリアする必要がありますか、それとも単に回転する必要がありますか?
—
ewwhite 2013年
どんなアプリケーション?アプリケーションは、これを適切に行うためのサポートを提供する必要があります。(それ以外の場合は、非常に醜いことができます。プロセスにアタッチし、新しいファイル、
—
David Schwartz
dup2
新しい記述子を古いファイルに上書きし、新しい記述子を閉じます。)
興味深いアプローチのシュヴァルツ。私はそれが実際に動作しているのを見て興味があるので、しばらく遊んでみます。とにかく、アプリケーションは社内にあり、より一般的なソリューションを探しています。私はコルモックの答えが好きです
—
ブルーノ・ポラコ
@ewwhiteログをローテーションする必要があります。ログデータを失うわけにはいきません
—
Bruno Polaco