類似的問題已經被問過堆疊溢位 但沒有給出有用的答案,我認為這裡更適合。
我需要記錄第一次反應時間的微秒或毫秒。我遵循 apache 2.2 文件中給出的格式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
sousec_frac
尚未解決,但它在文件中被列為 .so 的可能格式%{format}t
。我使用的是 CentOS 版本 5.8(最終版),並使用 vi 編輯了 httpd.conf。這裡可能有什麼問題?
答案1
正如您連結的官方文件中所寫:
%{UNIT}T
服務請求所花費的時間,以 UNIT 給予的時間單位表示。有效單位為 ms(毫秒)、us(微秒)和 s(秒)。使用 s 給出與 %T 相同的結果,無需任何格式;使用 us 得到與 %D 相同的結果。 2.2.30 及更高版本中提供了將 %T 與單位組合起來的功能。
答案2
我不知道如何解決您在 Apache 2.2.3 中遇到的問題,但...
如果其他方法都不起作用,請查看以下內容(取決於這對您來說有多重要)
- 取得最新版本的 apache 並編譯它,因為它沒有做它應該做的事情並且可能是錯誤。也許會起作用,嘗試一下也沒什麼壞處
- 如果這不起作用,請編輯程式碼並使其執行您想要的操作
我剛剛在 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