Apacheのログローテーション設定方法

2018年7月29日

Apache標準の機能でログローテーションを行う方法です。
超初心者にもわかるように書いたつもりです。

httpd.confの編集

まずは以下のファイルをテキストエディタで開いて編集します。

<Apacheインストールディレクトリ>\conf\httpd.conf

httpd.confファイルのCustomLogの部分を以下のように編集します。

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

使用例はこんな感じ。

CustomLog "| bin/rotatelogs.exe C:/log/Apache2/access.log.%Y%m%d 86400 540" common

設定内容の解説

それぞれの項目について説明していきましょう。

<rotatelogs.exeの場所>

このrotatelogs.exeが実際にログローテーション処理をしてくれるプログラムです。
おそらく標準であればインストールディレクトリのbin配下に配置されていると思いますのでその場所を指定します。

<ログの出力場所とファイル名>

ログの出力場所を設定します。
出力するログのファイル名まで指定するのですが、そこで以下のようにログファイル名のフォーマットを指定することが出来ます。

access.log.%Y%m%d

.logの後ろにごちゃごちゃと続いていますがこれらが意味するのは以下の通りです。
%Y:年
%m:月
%d:日

したがって、2018/05/21に出力されるログファイルは

access.log.20180521

となるわけですね。

<ローテーションの周期>

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

<UTCとのオフセット>

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

何も設定しない場合はUTCで0時(日本時間で9時)にローテーションが実行されることになります。

設定内容の反映

以上で設定はログローテーションの設定は完了です。

httpd.confを保存したらApacheを再起動しましょう。設定が反映されてログローテーションができるようになっているはずです。

おしまい。