温馨提示×

CentOS Java日志怎么过滤

小樊
36
2026-07-20 16:31:14
栏目: 编程语言

CentOS 上过滤 Java 日志,常见场景有几种,下面按最常用 → 进阶给你总结,基本都能覆盖 90% 的需求。


一、直接过滤日志文件(最常用)

1️⃣ 使用 grep 过滤关键字

grep "ERROR" /var/log/app/app.log

忽略大小写:

grep -i "error" /var/log/app/app.log

显示前后几行(排查异常非常有用):

grep -A 5 -B 5 "NullPointerException" app.log

实时过滤(类似 tail -f):

tail -f app.log | grep "ERROR"

2️⃣ 过滤多个关键字

grep -E "ERROR|WARN|Exception" app.log

3️⃣ 排除某些日志

忽略 INFO 日志:

grep -v "INFO" app.log

二、按时间过滤 Java 日志

1️⃣ 按日期范围(日志带时间)

假设日志格式:

2025-01-21 10:30:00 INFO ...
sed -n '/2025-01-21 10:00/,/2025-01-21 11:00/p' app.log

2️⃣ 只看今天的日志

grep "$(date +%Y-%m-%d)" app.log

三、过滤 Java 异常 / 堆栈信息

1️⃣ 过滤异常

grep -A 20 "Exception" app.log

2️⃣ 过滤 Caused by

grep -A 10 "Caused by" app.log

四、CentOS 下 systemd 管理的 Java 服务日志

如果 Java 是通过 systemctl 启动的:

journalctl -u your-java-service.service

过滤 ERROR:

journalctl -u your-java-service.service | grep ERROR

实时查看:

journalctl -u your-java-service.service -f

五、Tomcat / Spring Boot 日志过滤

Tomcat

tail -f logs/catalina.out | grep "ERROR"

Spring Boot

tail -f logs/spring.log | grep "Exception"

六、日志量太大?进阶工具

1️⃣ less(适合大文件)

less app.log

搜索:

/ERROR

2️⃣ awk 按条件过滤

只看 ERROR 行:

awk '/ERROR/' app.log

3️⃣ zgrep(压缩日志)

zgrep "ERROR" app.log.2025-01-*.gz

七、推荐日志规范(避免以后难过滤)

✅ 日志格式统一:

时间 | 级别 | 线程 | 类名 | 内容

✅ 使用日志框架:

  • Logback
  • Log4j2

✅ 级别清晰:

  • ERROR:异常
  • WARN:潜在问题
  • INFO:正常流程

总结(最常用三板斧)

tail -f app.log | grep ERROR
grep -A 10 Exception app.log
journalctl -u java-service -f

如果你愿意,可以告诉我:

  • ✅ Java 应用类型(Spring Boot / Tomcat / 普通 jar)
  • ✅ 日志路径
  • ✅ 想过滤什么(异常 / 某个用户 / 某段时间)

我可以给你精准命令

0