tomcat訪問日誌詳解
tomcat日誌 tomcat日誌配置
在server.xml裏的<host>標簽下加上
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
就可以了,下面咱們逐一分析各個參數。
className | 官方文檔上說了This MUST be set to org.apache.catalina.valves.AccessLogValve to use the default access log valve. &<60; 想配置訪問日誌?這就必須得寫成這樣。 |
directory | 這個東西是日誌文件放置的目錄,在tomcat下面有個logs文件夾,那裏面是專門放置日誌文件的,當然你也可以修改,我就給改成了/opt (E:\) |
prefix | 這個是日誌文件的名稱前綴,我的日誌名稱為localhost_access_log.2017-11-06.txt,前面的前綴就是這個localhost_access_log |
suffix | 這就是後綴名啦,可以改成別的 |
pattern | 這個是最主要的參數了,具體的咱們下面講,這個參數的內容比較豐富。 |
resolveHosts | 如果這個值是true的話,tomcat會將這個服務器IP地址通過DNS轉換為主機名,如果是false,就直接寫服務器IP地址啦 |
還有一些參數:
rotatable | 缺省值為true,默認的設置使得你的tomcat生成的文件命為prefix(前綴)+.+時間(一般是按天算)+.+suffix(後綴),參照我的日誌名就知道了:localhost_access_log.2017-11-06.txt 使用這個需要謹慎,因為你將其設置為false的話,tomcat會忽略時間,不會新生成文件,最後導致你的文件超級大,這樣生成的文件名就是:localhost_access_log.txt |
condition | 這個參數不太實用,可以設置任何值,比如咱們設置成condition="tkq",那麽只有當ServletRequest.getAttribute("tkq")為空的時候,才會被記錄下來 |
fileDateFormat | 最後的一個參數,是時間格式,但是這個時間格式是針對日誌文件起作用的,還記得咱們生成的日誌文件全名麽:localhost_access_log.2017-11-06.txt,這裏面的2017-11-06就是這麽來的,如果你想讓tomcat每小時生成一個日誌文件,也很簡單,將這個值設置為:fileDateFormat="yyyy-MM-dd.HH",當然也可以按分鐘生成什麽的,自己改改吧 |
上面是所有的9個參數,剛才咱們說了,pattern這個參數的值比較多,咱們拿下來單獨說:
pattern可以設置成兩種方式,第一種是pattern="common",第二種是pattern="combined",這就可以控制日誌裏面的格式,各位說了,pattern就這兩種?common和combined又是什麽意思,具體是什麽格式呢?
咱們一點一點看,其實pattern是可以設置的,common和combined只是集成了一些顯示方式,就是將顯示方式給組合了,pattern的實際值有如下幾種,都是後面一個字母,前面一個%百分號,咱們先貼出來我的日誌裏面的一條記錄,對應著看
127.0.0.1 192.168.254.108 - -1 15.43.45.122 HTTP/1.1 - GET 80&<60; GET /seces/commonService?wsdl HTTP/1.1 304 5563A67708646B6AA299C33D59BE132A [06/Nov/2017:10:08:52 +0800] - /seces/commonService?wsdl localhost 0 0.053
%a | 這是記錄訪問者的IP,在日誌裏是127.0.0.1 |
%A | 這是記錄本地服務器的IP,在日誌裏是192.168.254.108 |
%b | 這是發送信息的字節數,不涵括http頭,如果字節數為0的話,顯示為- |
%B | 看tomcat的解釋,沒看出來與b%的區別,但我這裏顯示為-1,沒想明白,望知道者告知,我把官方解釋貼出來吧 Bytes sent, excluding HTTP headers(發送的字節數,不包括HTTP頭) |
%h | 遠端主機名(如果resolveHost=false,遠端的IP地址) |
%H | 訪問者使用的協議,這裏是HTTP/1.1 |
%l | 官方說這個always return ‘-‘ 官方解釋:Remote logical username from identd (可能這樣翻譯:記錄瀏覽者進行身份驗證時提供的名字){從identd返回的遠端邏輯用戶名(總是返回 ‘-‘)}; |
%m | 訪問的方式,是GET還是POST,我這是GET |
%p | 收到請求的本地端口號,這裏的是80。 |
%q | 查詢字符串(如果存在,以 ‘?‘開始)。 比如你訪問的是aaa.jsp?bbb=ccc,那麽這裏就顯示?bbb=ccc,明白了吧,這個q是querystring的意思 |
%r | 官方解釋:First line of the request (method and request URI)——請求的第一行,包含了請求的方法和URI |
%s | 這個是響應http的狀態碼,這裏返回的是304,咱們經常看見訪問某個網頁報錯誤500什麽的,那也會返回500 |
%S | 用戶的session ID,這個session ID大家可以另外查一下詳細的解釋,反正每次都會生成不同的session ID |
%t | 日誌和時間,使用通常的Log格式 |
%u | 認證以後的遠端用戶(如果存在的話,否則為‘-‘) |
%U | 請求訪問的URL地址,我這裏是/seces/commonService?wsdl |
%v | 本地服務器名稱,可能就是你url裏面寫的那個吧,我這裏是localhost |
%D | 官方解釋:Time taken to process the request, in millis,處理請求的時間,以毫秒為單位 |
%T | 官方解釋:Time taken to process the request, in seconds,處理請求的時間,以秒為單位 |
common的值:%h %l %u %t %r %s %b
combined的值:%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i
至於combined的值的最後兩個:
%{Referer}i:從那個頁面鏈接跳轉到的此頁面%{User-agent}i:用戶的User-Agent
本文出自 “運維筆錄 美玲” 博客,請務必保留此出處http://meiling.blog.51cto.com/6220221/1979315
tomcat訪問日誌詳解