Apache 2.4.9 構築 5 - ログ設定

デフォルトの状態だとアクセスログの情報が少ないので、設定変更します。

モジュールが有効になっていることを確認。

# cd /usr/local/httpd-2.4.9/
# vi conf/httpd.conf

LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so

apache2.4.9のログフォーマットはhttpd.confを見ると以下のようになっています。combinedioが最もログ情報が多いですが、mod_logioモジュールが有効である必要があります。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
  # You need to enable mod_logio.c to use %I and %O
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

CustomLogディレクティブに設定されているログフォーマットが適用されます。デフォルトはcommonなのでcombinedioに変更します。

#CustomLog "logs/access_log" common
CustomLog "logs/access_log" combinedio

ついでにログローテーションの設定もします。パッケージインストールしたApache2.2.15の時はlogrotateでローテンションしてましたが、前回ソースインストールした2.4.7の時はなぜかlogrotateでApacheのログローテーションが機能せず、結局原因がわかっていません…

しかしApacheにはrotatelogsというコマンドでログのローテーションができるらしいので、今回はこちらを使います。ソースインストールしてパスを通していないのでフルパスで記述します。(1日でローション86400秒)

#CustomLog "logs/access_log" common
#CustomLog "logs/access_log" combinedio 
CustomLog "|/usr/local/httpd-2.4.9/bin/rotatelogs logs/access_log.%Y%m%d 86400" combinedio

エラーログも同じようにローテーションの設定をしておきます。

#ErrorLog "logs/error_log"
ErrorLog "|/usr/local/httpd-2.4.9/bin/rotatelogs logs/error_log.%Y%m%d 86400"

 

・その他

リバースプロキシを使っている場合、バックエンドのサーバのアクセスログとエラーログのリクエスト元は本来のアドレスではなく、プロキシ・ロードバランサーのアドレスになっています。プロキシ・ロードバランサー経由のリクエストはクライアントアドレスの情報を記述したX-Forwarded-Forヘッダを付けるので、バックエンドサーバでX-Forwarded-Forヘッダを参照するよう設定をすれば本来のリクエスト元アドレスをログに記述できます。

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

 

最新記事

 

参考