Java日志在CentOS上的最佳实践
一 架构与框架选择
二 日志格式与关键字段
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n========== start ==========),保证可解析性与可检索性。三 轮转与保留策略
<configuration>
<appender name="FILE" 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}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info"><appender-ref ref="FILE"/></root>
</configuration>
<Configuration status="WARN">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers><Root level="info"><AppenderRef ref="RollingFile"/></Root></Loggers>
</Configuration>
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 myapp myapp
}
四 输出路径与权限
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/var/log/myapp/app.log</file>
<encoder>
<pattern>%d{ISO8601} %-5level [%thread] %logger{0}: %msg%n</pattern>
</encoder>
</appender>
logging.file.name=logs/application.log 或环境变量指定路径。五 查看分析与集中化
tail -f /var/log/myapp/app.loggrep "ERROR" /var/log/myapp/app.logjournalctl -u myapp.service -fsrc/main/resources)