在 CentOS 上过滤 Java 日志,常见场景有几种,下面按最常用 → 进阶给你总结,基本都能覆盖 90% 的需求。
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"
grep -E "ERROR|WARN|Exception" app.log
忽略 INFO 日志:
grep -v "INFO" app.log
假设日志格式:
2025-01-21 10:30:00 INFO ...
sed -n '/2025-01-21 10:00/,/2025-01-21 11:00/p' app.log
grep "$(date +%Y-%m-%d)" app.log
grep -A 20 "Exception" app.log
grep -A 10 "Caused by" app.log
如果 Java 是通过 systemctl 启动的:
journalctl -u your-java-service.service
过滤 ERROR:
journalctl -u your-java-service.service | grep ERROR
实时查看:
journalctl -u your-java-service.service -f
tail -f logs/catalina.out | grep "ERROR"
tail -f logs/spring.log | grep "Exception"
less(适合大文件)less app.log
搜索:
/ERROR
awk 按条件过滤只看 ERROR 行:
awk '/ERROR/' app.log
zgrep(压缩日志)zgrep "ERROR" app.log.2025-01-*.gz
✅ 日志格式统一:
时间 | 级别 | 线程 | 类名 | 内容
✅ 使用日志框架:
✅ 级别清晰:
tail -f app.log | grep ERROR
grep -A 10 Exception app.log
journalctl -u java-service -f
如果你愿意,可以告诉我:
我可以给你精准命令。