ApacheのログにPOSTで送信された内容をログ出力する方法

apache


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



sakusaku

都内でSIerをやっています。 使用している技術は、Java、PHP、MySQL、PostgreSQL、Oracle、Apache、Tomcat、あたりです。 Pythonやってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください