一、Tomcat日志文件位置
Tomcat日志通常位于以下目录中:
- 默认路径:
/var/log/tomcatX(X为版本号,如tomcat9)
- 安装目录路径:
$CATALINA_HOME/logs/- 如果Tomcat是手动安装的,通常在:
/opt/tomcat/logs/ 或 /usr/local/tomcat/logs/
二、主要日志文件
catalina.out - 标准输出日志(主日志)
catalina.YYYY-MM-DD.log - 按日期分割的日志
localhost.YYYY-MM-DD.log - 应用相关日志
localhost_access_log.YYYY-MM-DD.txt - 访问日志
manager.YYYY-MM-DD.log - 管理控制台日志
三、查看日志的常用命令
1. 实时查看日志(最常用)
# 查看实时日志输出
tail -f /var/log/tomcat9/catalina.out
# 查看实时日志并高亮错误
tail -f /var/log/tomcat9/catalina.out | grep --color -E "ERROR|Exception|error"
# 查看最后100行并实时跟踪
tail -100f /var/log/tomcat9/catalina.out
2. 查看历史日志
# 查看完整日志文件
cat /var/log/tomcat9/catalina.out
# 查看文件末尾内容
tail -n 100 /var/log/tomcat9/catalina.out # 最后100行
tail -n 500 /var/log/tomcat9/catalina.out # 最后500行
# 查看文件开头内容
head -n 100 /var/log/tomcat9/catalina.out # 前100行
3. 按时间查看日志
# 查看特定时间段的日志
sed -n '/2023-10-01 10:00:00/,/2023-10-01 11:00:00/p' catalina.out
# 查看今天的所有日志
grep "$(date '+%Y-%m-%d')" /var/log/tomcat9/catalina.out
# 查看最近一小时的日志
grep "$(date '+%Y-%m-%d %H')" /var/log/tomcat9/catalina.out
4. 搜索和过滤日志
# 搜索错误信息
grep -i error /var/log/tomcat9/catalina.out
grep -i exception /var/log/tomcat9/catalina.out
# 搜索特定关键词(不区分大小写)
grep -i "connection refused" /var/log/tomcat9/catalina.out
# 显示错误及其前后10行上下文
grep -B 10 -A 10 -i error /var/log/tomcat9/catalina.out
# 多个条件搜索
grep -E "ERROR|WARN|Exception" /var/log/tomcat9/catalina.out
# 统计错误数量
grep -c "ERROR" /var/log/tomcat9/catalina.out
四、使用日志查看工具
1. less命令(支持搜索和翻页)
less /var/log/tomcat9/catalina.out
# less中常用操作:
# /关键词 - 搜索
# n - 下一个匹配项
# N - 上一个匹配项
# q - 退出
2. 使用multitail(多文件同时监控)
# 安装multitail
sudo apt-get install multitail # Ubuntu/Debian
sudo yum install multitail # CentOS/RHEL
# 同时监控多个日志文件
multitail /var/log/tomcat9/catalina.out /var/log/tomcat9/localhost.log
五、高级日志分析技巧
1. 分析访问日志
# 查看访问最频繁的IP
awk '{print $1}' localhost_access_log.* | sort | uniq -c | sort -nr | head -20
# 统计HTTP状态码
awk '{print $9}' localhost_access_log.* | sort | uniq -c | sort -nr
# 查看慢请求(响应时间>5秒)
awk '$(NF-1) > 5000 {print}' localhost_access_log.*
2. 使用日志轮转工具
# 查看日志轮转配置
cat /etc/logrotate.d/tomcat9
# 手动执行日志轮转
sudo logrotate -f /etc/logrotate.d/tomcat9
六、Tomcat日志配置修改
如果需要修改日志级别或格式,可以编辑配置文件:
# 编辑日志配置文件
sudo vi /etc/tomcat9/logging.properties
# 修改日志级别(示例:将org.apache.catalina的日志级别改为FINE)
org.apache.catalina.level = FINE
七、实用脚本示例
监控Tomcat日志的脚本
#!/bin/bash
# monitor_tomcat.sh
LOG_FILE="/var/log/tomcat9/catalina.out"
ALERT_KEYWORDS="ERROR|Exception|OutOfMemory|java.lang"
echo "开始监控Tomcat日志..."
tail -n 0 -f "$LOG_FILE" | while read LINE
do
if echo "$LINE" | grep -qE "$ALERT_KEYWORDS"; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 发现错误: $LINE"
# 可以添加邮件或短信通知
fi
done
日志清理脚本
#!/bin/bash
# 清理30天前的Tomcat日志
find /var/log/tomcat9/ -name "*.log" -mtime +30 -exec rm -f {} \;
find /var/log/tomcat9/ -name "*.txt" -mtime +30 -exec rm -f {} \;
常见问题排查
找不到日志文件
# 确认Tomcat安装位置
ps aux | grep tomcat
# 查找日志文件
find / -name "catalina.out" 2>/dev/null
日志文件过大
# 查看日志文件大小
du -sh /var/log/tomcat9/*
# 清空日志文件(谨慎操作)
> /var/log/tomcat9/catalina.out
查看Tomcat进程是否在运行
ps -ef | grep tomcat
systemctl status tomcat9 # 如果是systemd管理
注意事项
权限问题:查看日志可能需要sudo权限
日志轮转:定期检查日志文件大小,避免磁盘占满
生产环境:建议将重要日志接入ELK等日志分析系统
安全考虑:日志中可能包含敏感信息,注意保护
根据实际需求选择合适的查看方法,对于日常运维,tail -f 是最常用的实时监控方式。