GNU/Linux >> Linux の 問題 >  >> Linux

Linux で Apache ログ ファイルをローテーションする方法

質問: apache access_log を自動的にローテーションしたい および error_log ファイル. これを行う方法について、例を挙げて説明していただけますか?

答え: これは、以下で説明する logrotate ユーティリティを使用して実現できます。

次のファイルを /etc/logrotate.d ディレクトリに追加します。

# vi /etc/logrotate.d/apache
/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
    size 100M
    compress
    dateext
    maxage 30
    postrotate
      /usr/bin/killall -HUP httpd
      ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]
    endscript
}

注: logrotate オプションの使用方法の詳細については、logrotate チュートリアル (15 の例を含む) を参照してください。

上記の /etc/logrotate.d/apache の例では:

  • サイズ 100M – access_log、および error_log が 100M に達すると、ローテーションされます。 100k (Kb の場合)、100G (GB の場合) も使用できます。サイズの代わりに、頻度 (毎日、毎週、毎月) を使用して Apache ログをローテーションすることもできます。
  • 圧縮 – ローテーションされたログ ファイルが圧縮されることを示します。デフォルトでは、これは gzip を使用します。そのため、回転したファイルの拡張子は .gz になります。
  • 日付テキスト – ローテーションされたログ ファイルに日付を YYYYMMDD 形式で追加します。つまり、access_log.1.gz の代わりに、access_log-20110616.gz を作成します
  • 最大値 – ローテーションされたログ ファイルを保持する期間を示します。この例では、30 日間保持されます。
  • postrotate と endscript – これら 2 つのパラメーターで囲まれたコマンドは、ログがローテーションされた後に実行されます。

重要: ログ ファイルをローテーションしたら、apache が新しいログ メッセージを新しく作成された access_log と error_log に書き込むようにします。したがって、ここに示すように、HUP シグナルを Apache に送信する必要があります。 /usr/bin/killall -HUP httpd を必ず実行してください。これにより、ログ ファイルのローテーション後に Apache が再起動されます (kill の詳細を参照してください)。

また、メールの本文として ls -ltr コマンドの出力とともに、ログ ファイルがローテーションされることを示すメールを自分自身に送信することもできます。つまり、「postrotate」オプションと「endscript」オプションの間に次を追加します (killall コマンドの後)。

ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]

/etc/cron.daily/logrotate スクリプトは毎日実行され、/etc/logrotate.conf で指定されたすべてのファイルと /etc/logrotate.d ディレクトリの下のすべてのファイルのログ ローテーションを実行します。

上記の /etc/logrotate.d/apache ファイルを追加した後、テスト目的で、以下に示すように logrotate スクリプトを手動で呼び出すことができます。

# /etc/cron.daily/logrotate

ログ ファイルがローテーションされたら、ls を実行して確認します。上で説明したように、ローテーションされたログ ファイルは 30 日間保持されます。

# ls /usr/local/apache2/logs
access_log
error_log
access_log-20110716.gz
error_log-20110716.gz

Linux
  1. Linuxでファイルの名前を変更する方法

  2. LinuxでLogrotateを使用してログファイルを管理する方法

  3. rsyslogを使用してLinuxログ集約サーバーを作成する方法

  1. Linuxで複数のファイルを圧縮する方法

  2. Linuxでログファイルを空にする方法

  3. Linuxログファイル

  1. LinuxでLog2ramを使用してRAMにログファイルを書き込む方法

  2. Linux ですべてまたは特定のファイルを gzip する方法

  3. LinuxのBashで一度に複数のファイルを削除するには?