debian

Debian中Java日志如何有效管理

小樊
36
2025-12-17 00:33:42
栏目: 编程语言

Debian上Java日志的有效管理实践

一 架构总览与关键原则

二 应用内日志框架配置要点

<configuration>
  <appender name="JSON" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logs/app.%d{yyyy-MM-dd}.gz</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
      <providers>
        <timestamp><timeZone>UTC</timeZone></timestamp>
        <loggerName/><threadName/><logLevel/><message/><stackTrace/>
      </providers>
    </encoder>
  </appender>

  <!-- 可选:异步提升吞吐 -->
  <appender name="ASYNC_JSON" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>500</queueSize>
    <discardingThreshold>0</discardingThreshold>
    <appender-ref ref="JSON"/>
  </appender>

  <root level="INFO">
    <appender-ref ref="ASYNC_JSON"/>
  </root>
</configuration>

三 系统侧日志轮转与清理

/home/app/logs/app.log {
  daily
  missingok
  rotate 30
  dateext
  copytruncate
  notifempty
  compress
  delaycompress
  create 0640 app app
}

四 集中式日志采集与分析

# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /home/app/logs/*.log

output.elasticsearch:
  hosts: ["http://localhost:9200"]
setup.kibana:
  host: "localhost:5601"
# /etc/logstash/conf.d/java.conf
input { beats { port => 5044 } }
filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log_level} %{GREEDYDATA:msg}" }
  }
  date { match => [ "timestamp", "ISO8601" ] }
}
output { elasticsearch { hosts => ["localhost:9200"] index => "java-logs-%{+YYYY.MM.dd}" } }

五 日常运维与排错清单

0
看了该问题的人还看了