在 CentOS 上监控 Java 日志,常见做法可以分为 系统级日志监控、Java 应用日志监控、实时查看与告警。下面按实用场景给你一个完整方案。
常见 Java 日志位置:
| 类型 | 路径示例 |
|---|---|
| Spring Boot | /var/log/app/app.log |
| Tomcat | /opt/tomcat/logs/catalina.out |
| 自定义日志 | 项目配置中指定 |
| systemd | journalctl -u your-service |
✅ 先确认日志路径和日志框架(logback / log4j2 / jul)
tail -f /var/log/app/app.log
只看 ERROR:
tail -f /var/log/app/app.log | grep ERROR
less /var/log/app/app.log
常用操作:
G 跳到末尾?ERROR 向上搜索q 退出如果 Java 是 systemd 服务:
journalctl -u your-java-service -f
查看最近 100 行:
journalctl -u your-java-service -n 100
按时间:
journalctl --since "2025-01-01 00:00" --until "2025-01-02"
架构
Java 应用 → logback/log4j2
↓
File / Journal
↓
Prometheus (node_exporter / loki)
↓
Grafana
常用组件
| 组件 | 作用 |
|---|---|
| Elasticsearch | 存储日志 |
| Logstash / Filebeat | 采集日志 |
| Kibana | 查询展示 |
适合大流量 Java 系统。
监控 ERROR 并邮件/告警
tail -F /var/log/app/app.log | grep --line-buffered ERROR | while read line
do
echo "$line" | mail -s "Java ERROR 告警" admin@example.com
done
(生产建议用专业工具)
sed -n '/2025-01-01 10:00/,/2025-01-01 11:00/p' app.log
grep ERROR app.log | wc -l
grep Exception app.log | sort | uniq -c | sort -nr | head
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/app/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/app/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
✅ 避免日志打满磁盘
✅ 按天滚动
✅ 区分 ERROR / WARN / INFO
✅ 小项目
tail -fjournalctl✅ 中型项目
✅ 大型项目
如果你愿意,可以告诉我:
我可以直接给你一套 可复制的监控方案。