logrotate
とを含むさまざまなDebianパッケージはrsyslog
独自のログローテーション定義を持っています/etc/logrotate.d/
これらの定義をオーバーライドする正しい方法は何ですか?
ファイルを変更すると、システムが更新されるたびに警告が表示され、私(または他の人)が間違った答えを提供したり、私(または他の人)が手動でファイルをマージできない場合、変更が失われる可能性があります。 。新しいログファイルの新しいアップストリーム定義を取得できない可能性があります。この二つのことが、過去数年間で多く起こってきた。
00_*
または、ファイルの定義をオーバーライドしようとしましたが、重複しzz_*
たエラーが発生します。
error: zz_mail:1 duplicate log entry for /var/log/mail.log
error: found error in /var/log/mail.log , skipping
きれいな解決策はありますか?毎日定義ファイルに変更を再適用するには、cronスクリプトを作成する必要がありますか?
編集する:rsyslog
より明確に言えば、理想的には、ログ回転定義の99%を維持し、APTを使用して自動的に更新したいと思います。単一の定義に加えて、/var/log/mail.log
異なる循環戦略を適用する必要があります。
Logrotateが冗長定義を許可し、ファイルごとに最初または最後の定義のみを使用すると、私の問題は解決します。定義を意図的に以前の定義を上書きするようにマークするオプションがある場合、override
問題も解決します。
/etc/logrotate.d/rsyslog
しかし、残念ながら私のバージョンですべての内容を扱う必要があるようです。nginx
ベストアンサー1
まず、次のツールを使用することをお勧めします。etckeeper
ファイルの変更を追跡し、/etc
アップグレード中のデータの損失を防ぎます(他の利点も含みます)。
定義をオーバーライドする「正しい」方法はい設定ファイルを直接編集します。したがって、dpkg
構成ファイルで何をすべきかがわかり、アップグレード時に変更が適用されるとメッセージが表示されます。残念ながら、あなたも知っているように、これは理想的ではありません。
特定の設定の問題を Debian に優しい方法で実際に解決するには、メール メッセージを実際に別のログ ファイルに記録して設定することをお勧めします。それ〜に横たわっているlogrotate
:
- 新しいログファイルを
/etc/rsyslog.d
指す新しいログ設定ファイルをに追加します。mail.*
例えば/var/log/ourmail.log
(使用していると仮定rsyslog
- 適切に変更)。 /var/log/ourmail.log
新しい設定ファイルで設定しますlogrotate
。
これには新しい設定ファイルの追加のみが含まれるため、アップグレードの問題はありません。既存のログファイルはデフォルト設定を使用して生成され、循環されますが、ログファイルは設定に従います。