在 CentOS 上“过滤 Java 日志”通常有以下几种常见场景,我按最常见用法给你说明,你可以按需选择。
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 行(看异常堆栈很实用)
grep "2026-01-21 10:" app.log
多个条件:
grep "2026-01-21" app.log | grep ERROR
grep -E "ERROR|WARN" app.log
grep ERROR app.log | grep "UserService"
ps -ef | grep java
假设 PID 是 12345:
ls -l /proc/12345/fd
查看其标准输出(如果是 nohup):
tail -f /proc/12345/fd/1
如果 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
如果你能补充:
我可以给你更精确的命令。