logrotate戦略を正しくオーバーライドする方法は?

logrotate戦略を正しくオーバーライドする方法は?

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

これには新しい設定ファイルの追加のみが含まれるため、アップグレードの問題はありません。既存のログファイルはデフォルト設定を使用して生成され、循環されますが、ログファイルは設定に従います。

おすすめ記事