毎日のログローテーション - 元のログを保持

毎日のログローテーション - 元のログを保持

私は、graylog サーバーをホストする Ubuntu 14.04 で作業しています。/var/log/upstart/ ディレクトリには、受信したすべてのメッセージのプレーンテキスト ログがあり、3 GB ごとにローテーションするように設定されています。ただし、以前抱えていた問題は、ローテーションするたびに「graylog-server.log」が「graylog-server.log.1」に名前が変更されることです。これは気に入りません。設定に「copy」キーワードを追加したら、ファイル名は適切になりました。ただし、ログ ファイル内のすべてのメッセージが残ってしまうため、圧縮後に削除したいのです。そこで、私の質問は...

  • これを実現するのに役立つ設定キーワードはありますか? 調べてみましたが、logrotate は初めてなので、見逃しているものがあるかもしれません。
  • それができない場合、ログファイルをローテーションした直後に空にするようにスケジュールする方法はありますか? いくつかのメッセージが削除される可能性がありますが、それほど心配していません。

ありがとう!

設定:

/var/log/upstart/*server.* {
        size 3G
        missingok
        rotate 5
        compress
        notifempty
        nocreate
        copy
}

答え1

通常、最新のローテーション ログ ファイル ( file.1) は圧縮されずに保持され、次のローテーション ( file.1-> file.2.gz) で圧縮されます。

ローテーションしたログファイルをすぐに圧縮したい場合は、

nodelaycompress

オプション。

からman logrotate:

ノードレイ圧縮
前回のログファイルの圧縮を次のローテーションサイクルまで延期しないでください(これは、遅延圧縮オプション)。

関連情報