温馨提示×

centos如何过滤java日志

小樊
52
2026-09-06 06:04:38
栏目: 编程语言

在 CentOS 上“过滤 Java 日志”通常有以下几种常见场景,我按最常见用法给你说明,你可以按需选择。


一、实时查看并过滤 Java 日志(最常用)

1️⃣ 使用 tail + grep

假设日志文件是:

/var/log/java/app.log

实时查看包含 ERROR 的日志:

tail -f /var/log/java/app.log | grep ERROR

忽略大小写:

tail -f app.log | grep -i error

只看某类异常:

tail -f app.log | grep -A 10 -B 2 NullPointerException

-A 10 显示后 10 行,-B 2 显示前 2 行(看异常堆栈很实用)


二、按时间过滤 Java 日志

2️⃣ 按日期过滤(日志里有时间)

grep "2026-01-21 10:" app.log

多个条件:

grep "2026-01-21" app.log | grep ERROR

三、过滤多个关键字(AND / OR)

OR(包含 A 或 B)

grep -E "ERROR|WARN" app.log

AND(同时包含)

grep ERROR app.log | grep "UserService"

四、查看某个 Java 进程日志

3️⃣ 先找 Java 进程

ps -ef | grep java

假设 PID 是 12345:

ls -l /proc/12345/fd

查看其标准输出(如果是 nohup):

tail -f /proc/12345/fd/1

五、使用 journalctl(systemd 启动的 Java 服务)

如果 Java 是用 systemctl 启动的:

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

只看错误:

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

按时间:

journalctl -u your-java-service.service --since "2026-01-21 10:00"

六、日志文件太大时的高效过滤

使用 zgrep(.gz 日志)

zgrep ERROR app.log.2026-01-*.gz

使用 awk 按行内容过滤

awk '/ERROR/ {print}' app.log

七、推荐组合(生产常用)

tail -f app.log | grep -E "ERROR|Exception" --color=auto

如果你能补充:

  • Java 日志路径
  • 日志格式(logback / log4j / 控制台)
  • 想过滤什么(异常 / 某个用户 / 某个接口)

我可以给你更精确的命令。

0 踩