Tomcat的日志文件默認存儲在$CATALINA_HOME/logs
目錄下($CATALINA_HOME
為Tomcat安裝目錄環境變量),主要包含以下類型:
tail -f
命令跟蹤日志文件的新增內容(如catalina.out
),按Ctrl+C
停止:cd $CATALINA_HOME/logs
tail -f catalina.out
sed
命令截取指定時間范圍的日志(如2025-10-01至2025-10-02):sed -n "/2025-10-01/,/2025-10-02/p" catalina.out > /tmp/tomcat_specific.log
tomcat.service
),可使用journalctl
查看實時日志:journalctl -u tomcat.service -f
日志輪轉用于自動分割、壓縮舊日志,推薦使用系統自帶的logrotate
工具:
/etc/logrotate.d/
下創建tomcat
文件,添加以下規則(以catalina.out
為例):/var/log/tomcat/logs/catalina.out {
daily # 每天輪轉
rotate 7 # 保留最近7份
compress # 壓縮舊日志(如catalina.out.1.gz)
missingok # 若日志不存在不報錯
notifempty # 若日志為空不輪轉
copytruncate # 復制原日志后清空(避免重啟Tomcat)
}
logrotate -f /etc/logrotate.d/tomcat
server.xml
中配置AccessLogValve
),可設置rotatable="true"
和maxDays
屬性(如保留30天):<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
rotatable="true"
maxDays="30"
pattern="%h %l %u %t "%r" %s %b" />
Tomcat使用java.util.logging
框架,通過conf/logging.properties
文件調整日志級別(級別從高到低:SEVERE
>WARNING
>INFO
>CONFIG
>FINE
>FINER
>FINEST
):
handlers
對應的處理器級別(如將catalina
日志設為WARNING
,減少不必要的信息):1catalina.org.apache.juli.FileHandler.level = WARNING
2localhost.org.apache.juli.FileHandler.level = WARNING
3manager.org.apache.juli.FileHandler.level = WARNING
4host-manager.org.apache.juli.FileHandler.level = WARNING
org.apache.catalina.startup
)調整級別(如設為ERROR
,僅記錄錯誤信息):org.apache.catalina.startup.level = ERROR
systemctl restart tomcat
若需要更靈活的日志管理(如滾動策略、異步日志),可將Tomcat日志框架切換為Log4j:
log4j-1.2.17.jar
、tomcat-juli.jar
、tomcat-juli-adapters.jar
,放入$CATALINA_HOME/lib
目錄;bin/tomcat-juli.jar
替換為lib
目錄下的同名JAR;conf
目錄下創建log4j.properties
文件,設置日志輸出(如滾動文件、控制臺):log4j.rootLogger = INFO, file
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = /var/log/tomcat/tomcat.log
log4j.appender.file.MaxFileSize = 10MB
log4j.appender.file.MaxBackupIndex = 10
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
conf/logging.properties
文件。cron
定時任務(如每天凌晨2點)刪除超過30天的日志:0 2 * * * find /var/log/tomcat/logs -name "*.log.*" -mtime +30 -exec rm -f {} \;
AsyncAppender
或Tomcat的AsyncFileHandler
),減少I/O對主線程的影響;log4j
或java.util.logging
的Filter
機制,過濾日志中的密碼、密鑰等敏感數據;