Apacheのアクセスログには、デフォルトでGET形式で送信されたきたデータはログ出力されます。
しかし、POST形式で送信されたきたデータはログ出力されません。
実際には、Apacheが受信した時点でのHTTPリクエストにおけるPOSTデータを確認した場合があるかと思います。
というわけで今回は、POST形式のHTTPで送信されたきたデータをApacheのログに出力する方法を紹介します。
Apacheの設定を追加するだけで、ApacheのログにPOST形式で送信されたきたデータをログ出力できるようになります。
環境情報
- OS:Windows10
- Apache:Apache 2.4.41
mod_dumpioモジュールの有効化
POST形式で送信されたきたデータをログ出力するためには、「mod_dumpio」というApacheモジュールを有効にする必要があります。
「<Apacheインストールフォルダ>\conf」下の「httpd.conf」について、「mod_dumpio」を検索し、コメントアウトをはずして有効化します。
LoadModule dumpio_module modules/mod_dumpio.so
このモジュールを有効化することにより、HTTPリクエストの内容がログ出力されるようになります。
ログ出力設定の有効化
POST形式で送信されたきたデータをログ出力するためには、mod_dumpioモジュールの有効化以外に、httpd.confに3つの設定をおこなう必要があります。
- 「DumpIOInput」ディレクティブの追記
- 「DumpIOOutput」ディレクティブの追記
- ログレベルを「dumpio:trace7」にする
「DumpIOInput」ディレクティブを追記します。
これを追記することで、HTTPリクエストの内容がログ出力されるようになります。
DumpIOInput On
「DumpIOOutput」ディレクティブを追記します。
これを追記することで、HTTPレスポンスの内容がログ出力されるようになります。
DumpIOOutput On
ログレベルを「dumpio:trace7」にします。
LogLevel dumpio:trace7
最後にApacheを再起動して、ログ出力の準備完了です。
POSTデータのログ出力
POST形式のリクエストがログ出力されるようになったのですが、具体的には「error.log」にログ出力されます。
以下のような感じです。
mod_dumpio: dumpio_in (data-HEAP): Referer: http://localhost:81/test/post.html?query=1\r\n mod_dumpio: dumpio_in [getline-blocking] 0 readbytes mod_dumpio: dumpio_in (data-HEAP): 36 bytes mod_dumpio: dumpio_in (data-HEAP): Accept-Encoding: gzip, deflate, br\r\n mod_dumpio: dumpio_in [getline-blocking] 0 readbytes mod_dumpio: dumpio_in (data-HEAP): 42 bytes mod_dumpio: dumpio_in (data-HEAP): Accept-Language: ja,en-US;q=0.9,en;q=0.8\r\n mod_dumpio: dumpio_in [getline-blocking] 0 readbytes mod_dumpio: dumpio_in (data-HEAP): 2 bytes mod_dumpio: dumpio_in (data-HEAP): \r\n mod_dumpio: dumpio_in [readbytes-blocking] 25 readbytes mod_dumpio: dumpio_in (data-HEAP): 25 bytes mod_dumpio: dumpio_in (data-HEAP): address=address&name=name