Linux下Tomcat日志管理技巧
一 日志体系与定位
sudo find / -type d -name "logs" 2>/dev/null | grep tomcat。二 日志轮转与清理
/etc/logrotate.d/tomcat/opt/tomcat/logs/catalina.out {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
create 640 tomcat tomcat
postrotate
# 如使用 systemd,可改为 systemctl reload tomcat 或 kill -HUP <pid>
endscript
}
logrotate -d /etc/logrotate.d/tomcat(语法检查),logrotate -f /etc/logrotate.d/tomcat(强制执行)。sudo apt-get install cronolog(或 yum 安装)。if [ -z "$CATALINA_OUT" ]; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out; fi
改为 CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.outtouch "$CATALINA_OUT">> "$CATALINA_OUT" 2>&1 & 替换为
| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &rotatable="true" 并设置 maxDays(如 30 天)以自动清理历史访问日志。#!/bin/bash
LOG_PATH="/opt/tomcat/logs"
find "$LOG_PATH" -mtime +30 -name "catalina.*.log" -delete
find "$LOG_PATH" -mtime +30 -name "localhost.*.log" -delete
find "$LOG_PATH" -mtime +30 -name "localhost_access_log.*.txt" -delete
> "$LOG_PATH/catalina.out"
0 1 * * * /opt/tomcat/bin/clear_tomcat_logs.sh。三 日志级别与性能优化
org.apache.catalina.level = WARNINGorg.apache.catalina.startup.level = WARNINGhandlers = 1catalina.org.apache.juli.AsyncFileHandler, \
2localhost.org.apache.juli.AsyncFileHandler, \
3manager.org.apache.juli.AsyncFileHandler, \
4host-manager.org.apache.juli.AsyncFileHandler, \
java.util.logging.ConsoleHandler
maxDays 控制保留周期,避免无限制增长。四 备份与归档
sudo tar czvf tomcat_logs_$(date +%F).tar.gz /opt/tomcat/logs
五 日常运维命令与排错
tail -f /opt/tomcat/logs/catalina.outgrep -i "error" /opt/tomcat/logs/catalina.out | tail -n 50less /opt/tomcat/logs/localhost_access_log.*.txtrm 正在写入的日志;优先使用 logrotate 的 copytruncate 或 cronolog 按时间切割;超大文件需清理时先备份再清空。