當Ubuntu上的Tomcat日志文件(通常是catalina.out)過大時,可能會占用大量磁盤空間,影響系統性能,并且難以管理和分析。以下是一些解決Tomcat日志文件過大的方法:
logrotate 進行日志輪轉logrotate 是Linux系統自帶的日志輪轉工具,可以自動切割、壓縮、刪除和郵件通知日志文件。
編輯 logrotate 配置文件:
打開 /etc/logrotate.conf 文件,確保包含以下配置:
/home/tomcat/logs/catalina.out {
daily
rotate 20
compress
missingok
notifempty
create 0644 tomcat tomcat
}
這個配置表示每天輪轉 catalina.out 文件,保留最多20個備份,使用gzip壓縮舊日志文件。
創建 logrotate 配置文件:
在 /etc/logrotate.d/ 目錄下創建一個名為 tomcat 的文件,內容如下:
/home/tomcat/logs/catalina.out {
daily
rotate 20
compress
missingok
notifempty
create 0644 tomcat tomcat
}
手動執行 logrotate:
你也可以手動執行 logrotate 命令來測試配置是否正確:
sudo logrotate -d /etc/logrotate.conf # 測試配置
sudo logrotate -f /etc/logrotate.conf # 強制重新生成配置
設置 logrotate 定時任務:
logrotate 會自動在每天執行日志輪轉任務。你也可以手動觸發:
sudo logrotate -f /etc/logrotate.conf # 強制重新生成配置
cronolog 進行日志輪轉cronolog 是一個基于 logrotate 的工具,可以更靈活地控制日志文件的命名和輪轉。
安裝 cronolog:
sudo apt-get install cronolog
修改 catalina.sh 文件:
編輯 /usr/local/tomcat/bin/catalina.sh 文件,在 catalina.out 的日志路徑前添加 cronolog:
CATALINA_OUT="/usr/local/tomcat/logs/catalina.%Y-%m-%d.out"
重啟 Tomcat:
修改完成后,重啟 Tomcat 以使配置生效:
sudo service tomcat8 restart
通過調整日志級別,可以減少不必要的日志輸出,從而減少日志文件的大小。
修改 logging.properties 文件:
打開 /usr/local/tomcat/conf/logging.properties 文件,調整日志級別:
org.apache.catalina.core.ContainerBase.[Catalina].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].handlers = 2localhost.org.apache.juli.AsyncFileHandler
禁用不必要的日志:
如果你不需要某些特定的日志,可以在 server.xml 中配置 Valve 來禁用它們。例如,禁用訪問日志:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${catalina.base}/logs" prefix="access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/>
如果上述方法都不適用,你可以手動清理日志文件。
清空日志文件:
sudo rm -f /usr/local/tomcat/logs/catalina.out
定期清理舊日志:
使用 cron 定時任務定期刪除舊的日志文件:
crontab -e
添加以下行以每天刪除7天前的日志文件:
0 0 * * * find /usr/local/tomcat/logs/ -mtime +7 -type f -name "*.log" -exec rm -f {} \;
通過以上方法,你可以有效地管理Tomcat日志文件的大小,減少對服務器性能的影響。