温馨提示×

如何过滤ubuntu tomcat日志

小樊
34
2026-09-21 19:38:05
栏目: 智能运维

在 Ubuntu 上运行 Tomcat 时,日志通常位于 $CATALINA_HOME/logs(一般是 /var/lib/tomcat9/logs/opt/tomcat/logs)。常见日志文件包括:

  • catalina.out:主输出日志
  • catalina.yyyy-mm-dd.log
  • localhost.yyyy-mm-dd.log
  • localhost_access_log.yyyy-mm-dd.txt(访问日志)

下面按常见需求说明如何“过滤”Tomcat日志。


一、实时查看并过滤日志

1. 查看 ERROR / Exception

tail -f /var/lib/tomcat9/logs/catalina.out | grep -i error

2. 查看某个关键字(如 NullPointerException)

grep -i "NullPointerException" /var/lib/tomcat9/logs/catalina.out

3. 实时过滤多个关键词

tail -f /var/lib/tomcat9/logs/catalina.out | grep -E "ERROR|WARN|Exception"

二、按时间过滤日志

1. 查看某一天的日志

grep "2024-01-15" /var/lib/tomcat9/logs/catalina.out

2. 查看某个时间段(如 10:00–11:00)

awk '/10:00/,/11:00/' /var/lib/tomcat9/logs/catalina.out

三、过滤访问日志(access log)

访问日志示例:

127.0.0.1 - - [15/Jan/2024:10:12:33 +0000] "GET /api/test HTTP/1.1" 200 1234

1. 查看 500 错误

grep " 500 " /var/lib/tomcat9/logs/localhost_access_log.*.txt

2. 查看某个接口请求

grep "/api/login" /var/lib/tomcat9/logs/localhost_access_log.*.txt

3. 统计访问最多的 IP

awk '{print $1}' localhost_access_log.*.txt | sort | uniq -c | sort -nr

四、使用 logrotate 控制日志大小(防止过大)

Ubuntu 一般已配置 Tomcat 的 logrotate:

cat /etc/logrotate.d/tomcat9

可修改:

  • 日志保留天数
  • 是否压缩
  • 大小触发

示例:

/var/lib/tomcat9/logs/catalina.out {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

五、Tomcat 日志级别过滤(根本解决)

如果你是想减少无用日志,应改日志配置:

1. 修改 logging.properties

路径:

/etc/tomcat9/logging.properties

示例:

.level = INFO
org.apache.catalina.level = WARNING

2. 使用 log4j / logback(推荐)

如果你的应用使用 Spring Boot:

logging:
  level:
    root: INFO
    com.example: DEBUG

六、常用组合命令(实用)

最近 100 行中包含 Exception 的

tail -n 100 catalina.out | grep Exception

统计错误数量

grep -c "ERROR" catalina.out

提取完整异常栈

grep -A 20 "Exception" catalina.out

如果你能具体说明:

  • 看什么日志
  • 还是想减少日志量
  • 或是按用户 / 接口 / 时间过滤

我可以给你更精准的方案。

0