在 CentOS 上收集 Java 日志,常见做法取决于 Java 应用如何输出日志(控制台、日志框架、systemd、容器等)。下面按场景给你一套实用方案。
nohup java -jar app.jar > app.log 2>&1 &
app.log:收集标准输出和错误tail -f app.log
vi /etc/systemd/system/app.service
示例:
[Unit]
Description=Java App
After=network.target
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /opt/app/app.jar
SuccessExitStatus=143
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start app
systemctl enable app
journalctl -u app -f
导出日志:
journalctl -u app --since "2024-01-01" > app.log
<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>
</rollingPolicy>
</appender>
tail -f /var/log/app/app.log
# /etc/rsyslog.conf
*.* @@logserver:514
# filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
output.elasticsearch:
hosts: ["es:9200"]
docker logs -f container_id
docker logs container_id > app.log
vi /etc/logrotate.d/app
/var/log/app/*.log {
daily
rotate 7
compress
missingok
notifempty
}
hs_err_pid*.log(JVM 崩溃)-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/app/
如果你能告诉我:
我可以给你更精确的配置示例。