Tomcat中預設的情況下,access log是沒有設定的。在server.xml檔案中配置如下。
[html] view plain copy print ? <!-- Access log processes all example. Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> -->
一般情況下tomcat和apache是一起使用的,apache也有access log。tomca也設定的話是不是顯得多餘。
tomcat中的access log有一個優點是session ID也列印出來了。根據session ID可以有以下便利。
1,可以根據session ID來跟蹤某個使用者的畫面操作。
2, 如果出現錯誤的時候,可以根據session ID來再現。便於尋找出錯誤的地方。
設定非常簡單。
[html] view plain copy print ? <!-- Access log processes all example. Documentation at: /docs/config/valve.html --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".log" pattern="common" resolveHosts="false"/>
Tomcat中的Access Log,預設存放在logs目錄下。這個目錄會越來越大,如果訪問量大的話,很快就會把硬碟擠滿。
解決的方法有兩種:
不要記錄Access Log:注釋掉server.xml中的<Valve>配置項 把Access log存放到其他地方,然後定期壓縮歸檔:修改server.xml中<Valve>配置項中的“directory”參數,改為另外一個在大硬碟中的路徑
如果是在運行中的系統,需要多做幾步,先停止Tomcat、把Tomcat/logs中已經存在的Access Log檔案移走、修改設定檔、然後重啟Tomcat。一個具體的修改例子如下:
假設新存放路徑是/opt/logs/access_logs,檔案名稱首碼修改為xjj_access_log以免跟其他Tomcat的log混淆: cd /opt/logs mkdir access_logs vim /opt/app/tomcat-xjj/conf/server.xml 修改:directory="/opt/logs/access_logs" 修改:prefix="xjj_access_log" 停止tomcat:/opt/app/tomcat-xjj/bin/shutdown.sh 無法停止。殺死:kill -9 <pid> cd /opt/app/tomcat-xjj/logs
rename localhost_access_log xjj_access_log *.txt ( 用 尾碼.txt過濾出所有的access log檔案,並批量重新命名) mv *.txt /opt/logs/access_logs/ 重啟tomcat:/opt/app/tomcat-xjj/bin/startup.sh
然後,如果有需要,再另外寫指令碼定期壓縮歸檔/opt/logs/access_logs中的檔案(步驟略)。
附上
pattern
pattern屬性值由字串常量和pattern標識符加上首碼"%"組合而成。pattern標識符加上首碼"%",用來代替當前請求/響應中的對應的變數值。目前支援如下的pattern:
· %a - 遠端IP地址
· %A - 本地IP地址
· %b - 發送的位元組數,不包括HTTP頭,如果為0,使用"-"
· %B - 發送的位元組數,不包括HTTP頭
· %h - 遠端主機名稱(如果resolveHost=false,遠端的IP地址)
· %H - 請求協議
· %l - 從identd返回的遠端邏輯使用者名稱(總是返回 '-')
· %m - 請求的方法(GET,POST,等)
· %p - 收到請求的本地連接埠號碼
· %q - 查詢字串(如果存在,以 '?'開始)
· %r - 請求的第一行,包含了請求的方法和URI
· %s - 響應的狀態代碼
· %S - 使用者的session ID
· %t - 日誌和時間,使用通常的Log格式
· %u - 認證以後的遠端使用者(如果存在的話,否則為'-')
· %U - 請求的URI路徑
· %v - 本機伺服器的名稱
· %D - 處理請求的時間,以毫秒為單位
· %T - 處理請求的時間,以秒為單位
運行結果