Windows/Linux版 Apache2系統のログファイルを月別にする方法
2019/03/04
システムを作成する際はPCローカルにApachenのバーチャルホストを作成してから、製作に入るのですが、作成したバーチャルホストのアクセスログがしばらくしたら物凄いファイルサイズになっていることに気づきました。
同時に、社内システムも社内のサーバに設置しているのですが、こちらのログファイルの容量もえらいことに。
ということで、各バーチャルホストのアクセスログ、エラーログを月別にする方法をポストしてみます。
Windows版Apache
ではまず、Windows版です。
個々にApache、PHP、MySQLをインストールしている環境なので、xampp環境とは若干異なるところもありますが、基本的にxamppでも流用可能だと思います。
一般的なバーチャルホスト設定のアクセスログ、エラーログ部分は以下のようになっていると思います。
C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf
1 2 |
ErrorLog "E:/website_data/EXAMPLESYS/develop/examplesys/trunk/logs/examplesys.localhost-error.log" CustomLog "E:/website_data/EXAMPLESYS/develop/examplesys/trunk/logs/examplesys.localhost-access.log" combined |
上からエラーログ、アクセスログとなっており、エラーログは「examplesys.localhost-error.log」、アクセスログは「examplesys.localhost-access.log」というファイル名で延々と追加される設定となっています。
ひたすら追加していくので、気がつけば単体で1ギガ近いファイルサイズになっていた・・・という事も考えられます。
ということで、分かりやすく月別に分けてみたいと思います。
1 2 |
ErrorLog "| bin/rotatelogs E:/website_data/EXAMPLESYS/develop/examplesys/trunk/logs/examplesys.localhost-error_%Y%m.log 86400" CustomLog "| bin/rotatelogs E:/website_data/EXAMPLESYS/develop/examplesys/trunk/logs/examplesys.localhost-access_%Y%m.log 86400" combined |
Windows版Apacheにはログローテート用に「rotationlogs.exe」という実行ファイルがApacheのインストールフォルダ以下、/bin フォルダにあるので、それを利用します。
「|」(パイプ記号)でパスを通し、ログファイル名に「_%Y%m」を追加して年月別とします。
最後に「86400」を追加。86400は、ローテート(切り替え)周期で、単位は秒で指定します。内訳は1日の秒数ということで、「60秒*60分*24時間=86400」という意味です。
ただ、月別なのに、なぜ1日の秒数を指定するのかがよく分かりませんでした (^_^;)
これでWindows用は出来上がり。
Apacheを再起動して、きちんと起動すれば、アクセスしてみて実際にログファイルが出来上がるかをテストします。
Linux版Apache
では続いてLinux版。
同じようにエラーログとアクセスログ部分を書き換えてみます。
/usr/local/apache2/conf/extra/httpd-vhosts.conf
1 2 |
ErrorLog "/var/www/examplesys/logs/examplesys.test-error.log" CustomLog "/var/www/examplesys/logs/examplesys.test-access.log" combined |
Windows版と同様に書き換え。
Linuxで「rotatelogs」は Apacheのインストールディレクトリ/bin にあるので、環境に合わせて設定。
1 2 |
ErrorLog "| /usr/local/apache2/bin/rotatelogs /var/www/examplesys/logs/examplesys.test-error_%Y%m.log 86400" CustomLog "| /usr/local/apache2/bin/rotatelogs /var/www/examplesys/logs/examplesys.test-access_%Y%m.log 86400" combined |
とします。
記述方法などはWindows版もLinux版もパス以外違いはありません。
文法チェック
# /usr/local/apache2/bin/apachectl configtest
Syntax OK
となればOK。
Apacheを再起動して、きちんと起動すれば、アクセスしてみて実際にログファイルが出来上がるかをテストします。
Apache再起動
1 |
# /usr/local/apache2/bin/apachectl restart |
ログの種類(common と combined)
アクセスログの最後にあるオプションですが、common と combined の2種類が指定できます。
違いは、ログの内容。
こちらは common のログのサンプル。
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
combined はこうなります。
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
combinedの方がブラウザの種類などが取れるので、combined にしておくのが常套だと思われます。
詳細はコチラからどうぞ。
http://httpd.apache.org/docs/2.2/ja/logs.html