Apache 2.2 ログのタイムスタンプの精度を上げてマイクロ秒を含める

Apache 2.2 ログのタイムスタンプの精度を上げてマイクロ秒を含める

同様の質問がすでにありましたスタックオーバーフロー しかし、役に立つ回答は得られず、ここに書いた方が適切だと思います。

最初の応答時間のマイクロ秒またはミリ秒を記録する必要があります。Apache 2.2のドキュメントに記載されている形式に従いました。Apache 2.2 の mod ファイルは、http://httpd.apache.org/docs/2.2/mod/mod_log_config.html にあります。(私は apache 2.2.3 を使用しています) しかし、動作しません。/etc/httpd/conf/httpd.conf のログ形式を次のように変更しました。

LogFormat "%h %l %u %t %{usec_frac}t \"%r\" %>s %b %D" test

出力は次のようになります:

IPaddress - - [10/Oct/2015:19:47:46 +0200] usec_frac "GET /w/images/thumb/f/fa/Wikiquote-logo.svg/35px-Wikiquote-logo.svg.png HTTP/1.1" 200 1931 86

は解決されていませusec_fracんが、ドキュメントには の可能な形式として記載されています%{format}t。私は CentOS リリース 5.8 (最終版) を使用しており、vi で httpd.conf を編集しました。ここで何が問題なのでしょうか?

答え1

リンク先の公式ドキュメントに書かれている通り:

%{UNIT}T    

リクエストを処理するのにかかった時間。UNIT で指定された時間単位です。有効な単位は、ミリ秒の場合は ms、マイクロ秒の場合は us、秒の場合は s です。s を使用すると、フォーマットなしの %T と同じ結果になります。us を使用すると、%D と同じ結果になります。%T と単位の組み合わせは、2.2.30 以降で使用できます。

答え2

Apache 2.2.3 で発生している問題を解決する方法はわかりませんが...

他に何も効果がない場合は、次の点を検討してください(重要度に応じて異なります)

  1. Apache の最新バージョンを入手してコンパイルしてください。期待どおりに動作せず、バグの可能性があります。おそらく動作するでしょう。試してみても害はありません。
  2. それでもうまくいかない場合は、コードを編集して、必要な動作をするように修正してください。

2.4.10でテストしたところ、動作しました

127.0.0.1 - - [11/Oct/2015:16:37:50 -0400] 156545 "GET /cgi-bin/test.cgi HTTP/1.1" 200 175 1206218

関連情報