linux

Linux中Tomcat日志如何分析

小樊
50
2025-10-16 20:15:10
栏目: 智能运维

Linux环境下Tomcat日志分析指南

一、Tomcat日志文件定位

Tomcat的日志文件默认存储在$CATALINA_HOME/logs目录($CATALINA_HOME为Tomcat安装根目录),常见日志文件及作用如下:

二、基础日志查看与过滤

1. 实时查看日志

使用tail -f命令实时监控日志文件的新增内容(如查看catalina.out的最新日志):

tail -f /path/to/tomcat/logs/catalina.out

Ctrl+C停止监控。

2. 过滤特定信息

三、高级日志分析与统计

1. 统计错误数量

使用awk命令统计“ERROR”日志的总数:

awk '/ERROR/ {count++} END {print "Total ERRORs:", count}' /path/to/tomcat/logs/catalina.out

统计特定错误(如“NullPointerException”)的数量:

awk '/NullPointerException/ {count++} END {print "NullPointerException count:", count}' /path/to/tomcat/logs/catalina.out

2. 提取关键信息

3. 分析请求响应时间

若访问日志中包含响应时间(如第10列为响应时间,单位为毫秒),可计算平均响应时间:

awk '$10 ~ /^[0-9]+$/ {sum += $10; count++} END {print "Average response time:", sum/count "ms"}' /path/to/tomcat/logs/access_log.2025-10-16.txt
```。  


### **四、日志管理与优化**  
#### **1. 日志轮转**  
使用`logrotate`工具自动切割、压缩、删除旧日志(避免单个日志文件过大),编辑`/etc/logrotate.d/tomcat`文件(若不存在则创建),添加以下配置:  
```bash
/path/to/tomcat/logs/*.log {
    daily          # 每天轮转
    missingok      # 若日志文件不存在也不报错
    rotate 7       # 保留最近7天的日志
    compress       # 压缩旧日志(如.gz格式)
    notifempty     # 若日志为空则不轮转
    create 640 tomcat tomcat  # 创建新日志文件,权限640,所有者为tomcat用户
    sharedscripts  # 所有日志轮转完成后执行postrotate脚本
    postrotate
        /bin/kill -HUP `cat /path/to/tomcat/logs/catalina.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

手动触发轮转:

logrotate -f /etc/logrotate.d/tomcat
```。  

#### **2. 日志乱码解决**  
若日志中出现中文乱码,可在`catalina.sh`中添加JVM参数,设置文件编码为UTF-8:  
```bash
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

修改后重启Tomcat使配置生效。

五、常见错误排查示例

1. OutOfMemoryError(内存溢出)

2. 端口被占用

3. 配置文件错误

通过以上步骤,可系统性地分析Tomcat日志,快速定位并解决常见问题,保障服务器稳定运行。

0
看了该问题的人还看了