怎样过滤CentOS Java日志

2026-07-09编程开发279813

CentOS 上过滤 Java 日志,常见做法取决于日志来源(应用日志、systemd、容器、原始输出等)。下面按最常用场景给你一套可操作的方案。


一、按日志文件过滤(最常见)

1️⃣ 查看 Java 日志文件

Java 应用日志一般在:

/var/log/xxx.log
/opt/app/logs/app.log
~/logs/app.log

查看文件是否存在:

ls -lh /var/log/*.log

2️⃣ 使用 grep 过滤关键字

过滤 ERROR 日志

grep "ERROR" app.log

忽略大小写

grep -i "error" app.log

显示前后行(定位问题很常用)

grep -C 5 "NullPointerException" app.log

实时过滤(tail + grep)

tail -f app.log | grep "ERROR"

3️⃣ 按时间过滤日志

查看今天

grep "2024-01-21" app.log

查看某个时间段

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

二、过滤 systemd 管理的 Java 服务日志

如果 Java 是通过 systemctl 启动的:

1️⃣ 查看服务日志

journalctl -u your-java-service.service

2️⃣ 只显示错误

journalctl -u your-java-service.service -p err

3️⃣ 实时查看

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

4️⃣ 按时间过滤

journalctl -u your-java-service.service --since "2024-01-21 10:00" --until "2024-01-21 11:00"

三、过滤 Java 进程标准输出(STDOUT)

1️⃣ 找到 Java 进程

ps -ef | grep java

2️⃣ 查看进程输出(nohup.out)

tail -f nohup.out | grep "ERROR"

四、过滤 Docker 中的 Java 日志(常见)

1️⃣ 查看容器日志

docker logs container_name

2️⃣ 过滤错误

docker logs container_name | grep "ERROR"

3️⃣ 实时查看

docker logs -f container_name | grep "Exception"

五、过滤常见 Java 异常

过滤异常

grep -E "Exception|Error|Throwable" app.log

过滤堆栈信息(多行)

grep -A 20 "NullPointerException" app.log

六、使用 awk / sed(进阶)

按时间段提取

awk '/2024-01-21 10:/,/2024-01-21 11:/' app.log

统计 ERROR 数量

grep -c "ERROR" app.log

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

日志格式统一

2024-01-21 10:00:01 [ERROR] xxx

使用日志框架

  • Logback
  • Log4j2

按级别分文件

app-info.log
app-error.log

八、你可以直接告诉我

为了给你更精确的命令,可以补充:

  1. Java 是 直接运行 / systemd / Docker
  2. 日志是 文件 / systemd / 容器日志
  3. 想过滤 ERROR / 异常 / 某个接口 / 某个用户

我可以帮你写一条100% 精准的过滤命令

《怎样过滤CentOS Java日志.doc》

下载本文的Word格式文档,以方便收藏与打印。