Tomcat的日志分為核心日志(5類)和訪問日志兩類:
catalina(Catalina引擎日志)、localhost(Tomcat內部代碼日志)、manager(Tomcat管理應用日志)、host-manager(虛擬主機管理日志),默認通過logging.properties文件配置。server.xml文件啟用。確認Tomcat安裝路徑:
Debian系統下,Tomcat通常安裝在/usr/share/tomcatX(X為版本號,如9),$CATALINA_BASE指向/var/lib/tomcatX(日志、webapps等目錄所在位置)??赏ㄟ^以下命令確認:
sudo systemctl status tomcatX
輸出中的“Main PID”路徑即為$CATALINA_BASE。
檢查日志目錄權限:
確保Tomcat用戶(通常為tomcat)對日志目錄有讀寫權限:
sudo mkdir -p $CATALINA_BASE/logs
sudo chown -R tomcat:tomcat $CATALINA_BASE/logs
sudo chmod -R 755 $CATALINA_BASE/logs
logging.properties文件位于$CATALINA_BASE/conf目錄,主要配置日志級別、處理器(輸出位置)、格式等。
日志級別從高到低為:SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST(ALL表示輸出所有日志,OFF表示禁用)。
.level配置項,修改為所需級別(如INFO或FINE):.level = INFO
catalina、org.apache.catalina.authenticator):org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
org.apache.catalina.authenticator.level = FINE
處理器決定日志的輸出位置(控制臺、文件)和格式。默認處理器為AsyncFileHandler(異步文件輸出),需修改其屬性:
directory設置為$CATALINA_BASE/logs(推薦),避免權限問題:1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
prefix定義文件名前綴(如catalina.):1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
maxDays設置日志文件保留天數(如90天):1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
encoding設置為UTF-8,避免中文亂碼:1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler配置:java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
修改完成后,保存文件并重啟Tomcat使配置生效:
sudo systemctl restart tomcatX
訪問日志記錄HTTP請求詳情,默認關閉。需編輯$CATALINA_BASE/conf/server.xml文件,在<Host>標簽內添加或取消注釋AccessLogValve配置:
找到<Host>標簽(通常位于server.xml末尾),添加以下內容:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${catalina.base}/logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
resolveHosts="false"/>
directory:日志文件存放目錄(推薦${catalina.base}/logs)。prefix:日志文件名前綴(如localhost_access_log)。suffix:日志文件名后綴(如.txt)。pattern:日志格式,常用選項:
%h:客戶端IP地址(resolveHosts="false"時)。%t:請求時間(格式:EEE MMM dd HH:mm:ss yyyy)。%r:請求的第一行(方法+URI+協議,如GET /index.html HTTP/1.1)。%s:響應狀態碼(如200、404)。%b:發送的字節數(不包括HTTP頭,0則顯示-)。%{User-Agent}i:客戶端瀏覽器信息(需用%{xxx}i引用請求頭)。resolveHosts:是否將IP轉換為域名(false表示直接使用IP,提升性能)。若需記錄更詳細的訪問信息(如引用頁、用戶代理),可將pattern修改為:
pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i""
保存server.xml文件,重啟Tomcat使訪問日志生效:
sudo systemctl restart tomcatX
查看核心日志:
使用tail命令實時查看catalina日志(默認路徑:${catalina.base}/logs/catalina.out):
tail -f $CATALINA_BASE/logs/catalina.out
若配置了文件處理器,可查看catalina.日期.log文件。
查看訪問日志:
訪問Tomcat應用(如http://localhost:8080),然后查看訪問日志(路徑:${catalina.base}/logs/localhost_access_log.日期.txt):
tail -f $CATALINA_BASE/logs/localhost_access_log.txt
日志內容應包含客戶端IP、請求時間、請求方法、響應狀態碼等信息。
為防止日志文件過大,可使用logrotate工具定期輪轉日志。
Debian系統默認安裝logrotate,若未安裝,可通過以下命令安裝:
sudo apt-get install logrotate
創建/etc/logrotate.d/tomcat文件,添加以下內容:
$CATALINA_BASE/logs/catalina.out {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}
$CATALINA_BASE/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
systemctl reload tomcatX >/dev/null 2>&1 || true
endscript
}
daily:每天輪轉一次。rotate 14:保留14個備份(超過則刪除)。compress:壓縮舊日志(使用gzip)。copytruncate:復制日志文件后清空原文件(避免重啟Tomcat)。postrotate:輪轉后重新加載Tomcat(確保日志繼續輸出到新文件)。手動觸發輪轉,檢查是否生效:
sudo logrotate -vf /etc/logrotate.d/tomcat
驗證$CATALINA_BASE/logs目錄下是否生成壓縮的舊日志文件(如catalina.out.1.gz)。
通過以上步驟,您可完成Debian系統下Tomcat日志的配置,實現日志級別調整、訪問日志啟用、日志輪轉等功能,有效監控Tomcat運行狀態。