Tomcat配置自定義訪問日誌 --- 獲取請求頭部資訊
阿新 • • 發佈:2019-01-02
使用tomcat,搭建完個人網站後,預設記錄來訪遊客的資訊是十分有限的,主要有ip和路徑以及方法等。
有時候為了獲取更多來訪資訊,比如請求的頭部資訊,這個時候就需要我們手動配置log了。
開始
進入Tomcat的根目錄,然後 ---> conf ---> context.xml ,修改這個context.xml檔案,在它Context標籤內加上下面這段程式碼
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="headers" suffix=".txt" pattern="%t --- %a --- %U --- User-Agent:%{User-Agent}i --- Cookie:%{Cookie}i " resolveHosts="false" />
其中directory是檔案目錄,檔案字首為headers,字尾為.txt,表明為文字檔案,然後關鍵在於pattern這一段了:
裡面就是日誌記錄的格式,這裡就根據個人喜好來自定義了; 百分號%加上指定字母有特定的含義,比如%t就代表訪問的時間,%a表示來訪者的ip, %U為訪問的路徑。
需要注意的是%{header}i 指請求的對應頭部,如%{User-Agent}i 就代表user-agent頭部,如果請求中沒有的話,它就為空。
這裡有個問題,即沒有直接顯示訪問請求中全部頭部的操作,用StackOverflow一哥們的話說就是
There's no way out of the box
翻譯過來就是: 沒有開箱即用的方法。非要實現只能另外想辦法了。
這裡附上pattern中相應的字母代表的含義
- %a - 遠端IP地址
- %A - 本地IP地址
- %b - 傳送的位元組數,不包括HTTP頭,或“ - ”如果沒有傳送位元組
- %B - 傳送的位元組數,不包括HTTP頭
- %h - 遠端主機名
- %H - 請求協議
- %l (小寫的L)- 遠端邏輯從identd的使用者名稱(總是返回' - ')
- %m - 請求方法
- %p - 本地埠
- %q - 查詢字串(在前面加上一個“?”如果它存在,否則是一個空字串
- %r - 第一行的要求
- %s - 響應的HTTP狀態程式碼
- %S - 使用者會話ID
- %t - 日期和時間,在通用日誌格式
- %u - 遠端使用者身份驗證
- %U - 請求的URL路徑
- %v - 本地伺服器名
- %D - 處理請求的時間(以毫秒為單位)
- %T - 處理請求的時間(以秒為單位)
- %I (大寫的i) - 當前請求的執行緒名稱
上面新增完成後,重啟Tomcat,之後,在相應目錄就會生成之前你定義的檔案,我這裡就是在conf目錄下多了個headers.----.--.--.txt,-代表相應日期。隨便訪問下網站,就會發現裡面一下多出了好多預期的內容:
cookie我也懶得打馬賽克了,問題不大(●'◡'●)
如果想繼續深入瞭解的話, 可以點選這裡
最後打波廣告,歡迎來我新搭建的小窩玩耍 http://asche.top/
部落格經常性的炸,我也很無奈了╯︿╰