在 CentOS 上过滤 Java 日志,常见场景有:实时查看、按关键字过滤、按时间范围、按级别、按日志文件 等。下面按最常用方式给你一个完整指南。
一般 Java 应用日志可能在:
/var/log/
/opt/app/logs/
/home/app/logs/
常见文件名:
app.log
catalina.out # Tomcat
spring.log
server.log
grep "关键字" app.log
忽略大小写:
grep -i "error" app.log
显示行号:
grep -n "NullPointerException" app.log
tail -f app.log | grep "ERROR"
多个关键字(OR):
tail -f app.log | grep -E "ERROR|WARN|Exception"
排除某些日志:
tail -f app.log | grep -v "INFO"
2025-01-21 10:00:01 INFO Starting app
2025-01-21 10:00:02 ERROR Something wrong
grep "ERROR" app.log
grep -E "ERROR|WARN" app.log
grep "2025-01-21" app.log
sed -n '/2025-01-21 10:00/,/2025-01-21 11:00/p' app.log
grep -A 20 "Exception" app.log
grep -B 10 -A 20 "NullPointerException" app.log
tail -n 1000 app.log | grep "ERROR"
less app.log
在 less 中:
/ERROR 搜索n 下一个q 退出tail -f catalina.out | grep -E "ERROR|Exception"
按日期:
grep "2025-01-21" catalina.out
grep -i "application run failed" app.log
grep -i "port" app.log | grep -i "already"
tail -n 5000 app.log | grep "ERROR" | less
或:
grep "ERROR" app.log > error.log
awk 按字段过滤awk '/ERROR/ {print $0}' app.log
awk '$2 ~ /ERROR/ && $1 ~ /2025-01-21/' app.log
| 需求 | 命令 |
|---|---|
| 实时查看 | tail -f app.log |
| 过滤异常 | grep Exception app.log |
| 实时过滤 | tail -f app.log | grep ERROR |
| 上下文 | grep -A 20 Exception |
| 时间过滤 | grep "2025-01-21" |
如果你愿意,可以告诉我:
我可以帮你定制一条最精准的过滤命令。