Apacheのログを1日単位でローテーションする設定方法

Apacheのログファイルは、インストールした状態では同一のファイルへ書き込むため、数週間を経過すると、場合によって1GBという大きなサイズとなり、ファイルが開けなくなる可能性もあります。

簡単な設定変更だけで、Apacheのログを1日単位のログに分割してローテーション出力する設定方法を解説します。



Apacheのログを1日単位でローテーションする設定手順

Apacheのログを1日単位でローテーションする、言い換えると、1つのファイルに蓄積するApacheのログを、日単位にファイル分割するよう変更するための設定手順を解説します。

「httpd.conf」ファイルのあるディレクトリへ移動

Apacheの設定ファイルである「httpd.conf」ファイルを変更するため、「httpd.conf」ファイルがあるディレクトリへ移動します。

「httpd.conf」ファイルの在り処

「httpd.conf」ファイルの在り処は、OSによって異なります。

  1. Linuxの場合
  2. /etc/apache2/httpd.conf
    又は
    /etc/httpd/conf/httpd.conf
    探す場合
    # find / -name httpd.conf

  3. Windowsの場合
  4. C:¥Program Files (x86)¥Apache software Foundation¥pache2.2¥conf¥httpd.conf
    又は
    C:¥Program Files¥Apache Group¥Apache2¥conf
    又は
    C:¥Apache

httpd.confから「CustomLog」を検索

httpd.confをviエディタ、もしくはメモ帳等のテキストエディタで開いた後に「CustomLog」で検索します。下記のような記述が検索できると思います。

CustomLog logs/access_log common

httpd.confの変更

「CustomLog」で検索した行の先頭に「 # 」を付けてコメント行に変更して、その1行下に下記の行を追記します。

#CustomLog logs/access_log common
CustomLog “| bin/rotatelogs.exe logs/access_%Y%m%d.log 86400” common

※別の例として、ディレクトリをフルパスで指定した例は下記の通りです。

CustomLog “|¥”C:/Apache Group/Apache2.2/bin/rotatelogs¥” ¥”C:/Apache Group/Apache2.2/logs/access.log¥” 86400″ common

上記で設定した意味は下記となります。

CustomLog “| <roglate.exeの場所> <ログの出力場所とファイル名> <ローテーションの周期> <UTCとのオフセット>”

rotatelogs.exeの場所

rotatelogs.exeが、実際にログローテーション処理をしてくれるプログラムです。インストールディレクトリのbin配下に存在するため、その場所を指定します。

access.log.%Y%m%d

ログのファイル名に、出力した年月日を付与するための設定です。
%Y:年
%m:月
%d:日

ローテーションの周期

何秒ごとにログファイルをローテーションするかの設定です。”秒”単位で設定します。1日毎にローテーションしたい場合は86400(24時間)を設定しておきましょう。

UTCとのオフセット

オフセットというのはJST(日本標準時)とUTC(協定世界時)との差のことです。
「JST(日本標準時)」は「UTC(協定世界時)」の9時間後であるため、「UTC+9時間」を設定すると、日本時間の午前0時にローテーションが実行されます。

Apacheの再起動

Apacheを再起動すると、変更したhttpd.confをApacheが読み込んで、ログローテーションの設定通りに動作するようになります。