2013-08-25 36 views
0

我正在與siginup /登錄過程一個網站。而且我喜歡在用戶註冊或進入我的網站時插入用戶ID。 我的Apache的access.log是在以下幾點:定製Apache日誌

115.137.10.87 - - [26/Aug/2013:07:38:52 +0900] "GET /api/game/ HTTP/1.1" 200 1402 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 
115.137.10.87 - - [26/Aug/2013:07:38:59 +0900] "GET /api/premium/brand HTTP/1.1" 200 721 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 
115.137.10.87 - - [26/Aug/2013:07:38:59 +0900] "GET /api/brand/ HTTP/1.1" 200 2510 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 
115.137.10.87 - - [26/Aug/2013:07:39:00 +0900] "GET /api/game/ HTTP/1.1" 200 1402 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 

我可以清楚地看到什麼http請求是從什麼IP地址發送。 但如果我把用戶ID(如$用戶ID),該日誌,這將是美好的日誌,我將能夠得到決策良好的統計信息。

如果可能的話,有沒有辦法做到這一點? 任何意見將非常感激。

日誌將是這樣的:

115.137.10.87 - - [26/Aug/2013:07:38:52 +0900] "***[USERID]*** GET /api/game/ HTTP/1.1" 200 1402 "-" "android-async-http/1.4.3 (http://loopj.com/android-async-http)" 

回答

0

如果使用HTTP基本或摘要驗證,則該用戶名從HTTP報頭得出,並且可以通過在使用%u被插入到日誌LogFormat指令在你的apache配置中。如果你的登錄系統在頭部沒有包括用戶名(可能),那麼我知道的唯一的其他選擇是以某種方式設置一個環境變量,然後Apache可以用%{FOOBAR}e寫出。見http://httpd.apache.org/docs/2.2/logs.html

否則,你可能會更好從應用程序代碼編寫出自己的日誌文件(或使用應用程序級別的日誌庫 - Log4j的,或其他)

+0

感謝這麼多的快速回復。這將是一個很大的幫助。 – user1942626

+0

我讀Apache日誌的文章。但我不知道在哪裏設置我自己的變量並使用它。找不到示例代碼。你可以給我一個例子嗎?我擔心我的愚蠢嘗試會導致系統出現任何問題。 – user1942626

+0

是使用HTTP Basic或摘要式身份驗證登錄?爲了使用%u,它需要。否則,這些是設置環境變量的主要選項:http://httpd.apache.org/docs/2.2/env.html –