天天看點

tomcat 伺服器通路日志配置方法

最近需要配置tomcat通路日志,通過造訪他人的部落格,再根據apache官方的一些文章,才逐漸清晰了許多

配置方法很簡單:

在server.xml裡的<host>标簽下加上

<Valve className=”org.apache.catalina.valves.AccessLogValve”

directory=”logs” prefix=”localhost_access_log.” suffix=”.txt”

pattern=”common” resolveHosts=”false”/>

就可以了,下面咱們逐一分析各個參數。

[table]

|className 官方文檔上說了This MUST be set to org.apache.catalina.valves.AccessLogValve to use the default access log valve. &<60; 想配置通路日志?這就必須得寫成這樣。

|

|directory 這個東西是日志檔案放置的目錄,在tomcat下面有個logs檔案夾,那裡面是專門放置日志檔案的,當然你也可以修改,我就給改成了D:\

|

|prefix 這個是日志檔案的名稱字首,我的日志名稱為localhost_access_log.2007-09-22.txt,前面的字首就是這個localhost_access_log

|

|suffix 這就是字尾名啦,可以改成别的

|

|pattern 這個是最主要的參數了,具體的咱們下面講,這個參數的内容比較豐富。

|

|resolveHosts 如果這個值是true的話,tomcat會将這個伺服器IP位址通過DNS轉換為主機名,如果是false,就直接寫伺服器IP位址啦|

[/table]

還有一些參數:

[table]

|rotatable 預設為true,預設的設定使得你的tomcat生成的檔案命為prefix(字首)+.+時間(一般是按天算)+.+suffix(字尾),參照我的日志名就知道了:localhost_access_log.2007-09-22.txt

|

|使用這個需要謹慎,因為你将其設定為false的話,tomcat會忽略時間,不會新生成檔案,最後導緻你的檔案超級大,這樣生成的檔案名就是:localhost_access_log.txt

|

|condition 這個參數不太實用,可以設定任何值,比如咱們設定成condition=”tkq”,那麼隻有當ServletRequest.getAttribute(“tkq”)為空的時候,才會被記錄下來

|

|fileDateFormat 最 後的一個參數,很明白,這就是時間格式嘛,但是這個時間格式是針對日志檔案起作用的,還記得咱們生成的日志檔案全名 麼:localhost_access_log.2007-09-22.txt,這裡面的2007-09-22就是這麼來的,如果你想讓tomcat每小 時生成一個日志檔案,也很簡單,将這個值設定為:fileDateFormat=”yyyy-MM-dd.HH”,當然也可以按分鐘生成什麼的,自己改改吧 |

[/table]

上面是所有的9個參數,剛才咱們說了,pattern這個參數的值比較多,咱們拿下來單獨說:

pattern可以設定成兩種方式,第一種是pattern=”common”,第二種是pattern=”combined”

這就可以控制日志裡面的格式,各位說了,pattern就這兩種?common和combined又是什麼意思,具體是什麼格式呢?

别着急,咱們一點一點看,其實pattern是可以設定的,common和combined隻是內建了一些顯示方式,就是将顯示方式給組合了,pattern的實際值有如下幾種,都是後面一個字母,前面一個%百分号

咱們先貼出來我的日志裡面的一條記錄,對應着看

127.0.0.1 192.168.254.108 – -1 127.0.0.1 HTTP/1.1 – GET 80&<60; GET /rightmainima/leftbott4.swf HTTP/1.1 304 5563A67708646B6AA299C33D59BE132A [22/Sep/2007:10:08:52 +0800] – /rightmainima/leftbott4.swf localhost 0 0.000

[table]

|%a 這是記錄通路者的IP,在日志裡是127.0.0.1

|

|%A 這是記錄本地伺服器的IP,在日志裡是192.168.254.108

|

|%b 這是發送資訊的位元組數,不涵括http頭,如果位元組數為0的話,顯示為-

|

|%B 看tomcat的解釋,沒看出來與b%的差別,但我這裡顯示為-1,沒想明白,望知道者告知,我把官方解釋貼出來吧 Bytes sent, excluding HTTP headers

|

|%h 這個就是伺服器名稱了,如果resolveHosts為false的話,這裡就是IP位址了,我的日志裡是127.0.0.1

|

|%H 通路者使用的協定,這裡是HTTP/1.1

|

|%l 這個也不太清楚,官方也說這個always return ‘-’ 官方解釋:Remote logical username from identd (可能這樣翻譯:記錄浏覽者進行身份驗證時提供的名字)(always returns ‘-’)

|

|%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),不是很明白

|

|%s 這個是http的狀态,我這裡傳回的是304,咱們經常看見通路某個網頁報錯誤500什麼的,那也會傳回500

|

|%S 使用者的session ID,這個session ID大家可以另外查一下詳細的解釋,反正每次都會生成不同的session ID

|

|%t 這就是時間啦,好像有一個Common Log Format可以改,不過我沒找到

|

|%u 得到了驗證的通路者,否則就是”-”

|

|%U 通路的URL位址,我這裡是/rightmainima/leftbott4.swf

|

|%v 伺服器名稱,可能就是你url裡面寫的那個吧,我這裡是localhost

|

|%D 官方解釋:Time taken to process the request, in millis,應該是通路發生的時間,以毫秒記

|

|%T 官方解釋:Time taken to process the request, in seconds,應該是通路發生的時間,以秒記 |

[/table]

common的值:%h %l %u %t %r %s %b

combined的值:%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i

至于combined的值的最後兩個為什麼會這樣,我也不太清楚…

這就是所有的參數了,歡迎交流探讨!

這是官方的解釋位址:http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html

這個也可以看一看做參考:http://tomcat.apache.org/tomcat-5.0-doc/config/logger.html

還有這個:http://tomcat.apache.org/tomcat-5.0-doc/config/host.html

Apache官方對Tomcat通路日志的配置介紹的并不詳細,大家可以參考Apache(web server)的通路日志,兩者有相當多相似的地方