この記事は「Apache上のPerl FastCGIはCustomLogにデータを書くことができるか?ついでにmod_perlでのお話」へのレスです
「FCGIので動いているアプリケーションがあって、コードの中の変数をapacheのLOGに出したいのですよ。」とのことらしいので昔書いた mod_copy_header というモジュールを思い出しながら再現して github に置いた
https://github.com/kazeburo/mod_copy_header
これを使うと任意のレスポンスヘッダを Apacheのnoteにコピーすることができます。あとはmod_headersでレスポンスヘッダを消すなり、CustomLogでログに記録するなりできます。
なぜこのモジュールが必要なのかというと、ヘッダだけでやろうとした場合、元記事でも紹介されてますが、
<Location ..>
CustomLog ".. %{X-Foobar}o"
</Location>
のように設定すれば確かにログに任意の情報を残すことができます。しかし、ユーザにヘッダを見せたくない場合は使えません。
そこでmod_headersを使ってログの削除を試みるのですが
<Location ..>
Header unset X-Foobar
CustomLog ".. %{X-Foobar}o"
</Location>
これだとログの記録より先にmod_headersが先に動いてしまうので、ログには空っぽの「-」しか記録できません。
そこで、mod_copy_header を使うと、まず(mod_headersより先に)ヘッダをnoteにコピーし、mod_headersでヘッダを削除。ログはnoteを参照する。ということができるので、うまく記録ができます
LoadModule copyheader_module modules/mod_copyheader.so
<Location /foobar>
ProxyPass http://...
<IfModule copyheader_module>
CopyHeaderActive On
CopyHeader X-Foobar
</IfModule>
Header unset X-Foobar
LogFormat "... %{X-Foobar}n" xfoobar
CustomLog "logs/access_log" xfoobar
</Location>
Reverse ProxyとApplication Serverの2段構成になっていて、Applicationのなんらかの値(処理にかかった時間やユーザ情報)をReverse Proxyのログに残した場合などに使えますね!