Tomcat訪問日誌淺析

來源:互聯網
上載者:User

標籤:style   http   color   io   os   ar   for   sp   檔案   

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"                 prefix="localhost_access_log." suffix=".txt" pattern="%s %D %t %a %U" fileDateFormat="yyyy-MM-dd.HH" resolveHosts="false"/>
上面的日誌會記錄:http狀態代碼 執行時間長度 時間 IP 請求的地址fileDateFormat每小時儲存一個。去掉的話。預設是一天。因為日誌太大所以改成每小時產生一個。調試完了,需要關閉。
          

Tomcat的訪問日誌是靠org.apache.catalina.valves.AccessLogValve來控制的,你可以修改$tomcat/conf/server.xml來啟用它 ($tomcat是Tomcat安裝的目錄)。AccessLogValve預設應該是注釋掉的,簡單的將其注釋去掉,然後重啟Tomcat就可以了。

以下是Tomcat預設的配置:

<valve classname=“org.apache.catalina.valves.accesslogvalve”< p=""></valve classname=“org.apache.catalina.valves.accesslogvalve”<>

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

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

你可以設定日誌儲存的目錄(directory),日誌的檔案名稱的首碼(prefix),尾碼(suffix)和日誌的具體格式。儲存目錄,檔案名稱的首碼、尾碼都很簡單,一般預設設定也就可以了。resolveHost出於效能的考慮,一般也設為false. 但訪問日誌的格式(pattern)卻有很多的選項供你選擇。以下列出了一些基本的日誌格式項:

%a – 遠程主機的IP (Remote IP address)

%A – 本機IP (Local IP address)

%b – 發送位元組數,不包含HTTP頭,0位元組則顯示 ‘-’ (Bytes sent, excluding HTTP headers, or ‘-’ if no bytes

were sent)

%B – 發送位元組數,不包含HTTP頭 (Bytes sent, excluding HTTP headers)

%h – 遠程主機名稱 (Remote host name)

%H – 請求的具體協議,HTTP/1.0 或 HTTP/1.1 (Request protocol)

%l – 遠端使用者名,始終為 ‘-’ (Remote logical username from identd (always returns ‘-’))

%m – 請求方式,GET, POST, PUT (Request method)

%p – 本機連接埠 (Local port)

%q – 查詢串 (Query string (prepended with a ‘?’ if it exists, otherwise

an empty string)

%r – HTTP請求中的第一行 (First line of the request)

%s – HTTP狀態代碼 (HTTP status code of the response)

%S – 使用者會話ID (User session ID)

%t – 訪問日期和時間 (Date and time, in Common Log Format format)

%u – 已經驗證的遠端使用者 (Remote user that was authenticated

%U – 請求的URL路徑 (Requested URL path)

%v – 本機伺服器名 (Local server name)

%D – 處理請求所耗費的毫秒數 (Time taken to process the request, in millis)

%T – 處理請求所耗費的秒數 (Time taken to process the request, in seconds)

你可以用以上的任意組合來定製你的訪問日誌格式,也可以用下面兩個別名common和combined來指定常用的日誌格式:

common – %h %l %u %t "%r" %s %b

combined -

%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"

另外你還可以將cookie, 用戶端請求中帶的HTTP頭(incoming header), 會話(session)或是ServletRequest中的資料都寫到Tomcat的訪問日誌中,你可以用下面的文法來引用。

%{xxx}i – 記錄用戶端請求中帶的HTTP頭xxx(incoming headers)

%{xxx}c – 記錄特定的cookie xxx

%{xxx}r – 記錄ServletRequest中的xxx屬性(attribute)

%{xxx}s – 記錄HttpSession中的xxx屬性(attribute)

比如下面是實際的一個訪問日誌格式的配置:

<valve classname=“org.apache.catalina.valves.accesslogvalve”< p=""></valve classname=“org.apache.catalina.valves.accesslogvalve”<>

directory=“logs” prefix=“phone_access_log.” suffix=“.txt”

pattern=“%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i MSISDN=%{x-up-calling-line-id}i”resolveHosts=“false”/>

其中日誌格式(pattern)指定為”%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i MSISDN=%{x-up-calling-line-id}i“,則實際的訪問日誌中將會包括:

%h – 遠程主機名稱

%l - 遠端使用者名,始終為 ‘-’

%T - 處理請求所耗費的秒數

%t – 訪問日期和時間

%r – HTTP請求中的第一行

%s – HTTP狀態代碼

%b – 發送位元組數,不包含HTTP頭(0位元組則顯示 ‘-’)

%{Referer}i – Referer URL

%{User-Agent}i – User agent

MSISDN=%{x-up-calling-line-id}i – 手機號

實際的訪問日誌如下:

xxx.xxx.xx.xxx – 0.270 [14/Jul/2008:13:10:53 +0800] POST /phone/xxx/gprs HTTP/1.1 200 91812 – SonyEricssonW890i/R1EA Profile/MIDP-2.1 Configuration/CLDC-1.1 MSISDN=11111111111

… …

xxx.xxx.xx.xxx – 0.083 [14/Jul/2008:21:20:55 +0800] POST /phone/xxx/gprs HTTP/1.1 200 404 – SonyEricssonW910i/R1FA Profile/MIDP-2.1 Configuration/CLDC-1.1 MSISDN=11111111111

來源: 

Tomcat訪問日誌淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.