ApacheでPOSTデータをログに記録したい
はじめに
Apacheのデフォルトの設定ではaccessログにはPOSTデータの
内容は表示されません。
というか、ユーザの機密情報をログに残さないことが目的の一つで
POSTメソッドを使っているので、それで正しい思います。
ただ、開発中の検証などで、POSTデータをログに記録したいことが
あると思いますので、その方法を説明します。
もっとも、自分はPOSTするようなWEBアプリケーションを作るときはWEBフレームワークを
使っていて、だいたいのフレームワークはdebugモードにすると、POSTのデータを
見ることができるので、めったに使うことはないと思いますが、、、
環境について
下記の環境で設定をしました。
-
OS: CentOS6.4 x86_64
-
Apache: Apache 2.2.25 (ソースからインストールしたもの)
mod_dumpioインストール
POSTデータをログに残すためには、mod_dumpio
というモジュールが必要になります。
まず、これがインストールされているかチェックします。
インストールされている場合:
# httpd -M |grep dumpio
dumpio_module (shared)
Syntax OK
インストールされていない場合:
# httpd -M |grep dumpio
Syntax OK
mod_dumpio
がインストールされていない場合は、インストールします。
下記は拡張モジュールをソースからインストールする方法です。
mod_dumpioモジュールがある、Apacheのソースアーカイブに移動:
# cd /..Apacheのソース../modules/debug/
apxsコマンドを使ってモジュールをインストール:
# apxs -i -a -c mod_dumpio.c
Apacheの設定ファイルhttpd.confを編集
apxs
コマンドの-a
オプションで、httpd.conf
に下記が追記されていることを確認:
LoadModule dumpio_module modules/mod_dumpio.so
サーバ設定ファイルにDumpIOInputディレクティブを追記:
これにより、HTTPリクエストのヘッダやボディの内容がerrorログに表示されるようになります
DumpIOInput On
サーバ設定ファイルにDumpIOOutputディレクティブを追記:
これにより、HTTPレスポンスのヘッダとボディの内容がerrorログに表示されるようになります
DumpIOOutput On
ログレベルをdubug
にする:
LogLevel debug
以上でApacheのerrorログにPOSTの内容が表示されるようになります。
私は最初勘違いしてaccessログ見てました、、、