Java日志在Linux中的存储策略
一 策略总览
二 常用方案与配置示例
Logback(Spring Boot 常用):按天滚动并保留 30 天,当前日志为 logs/app.log,历史为 logs/app-2025-08-01.log。
<configuration>
<property name="LOG_DIR" value="logs"/>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/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="ROLLING_FILE"/></root>
</configuration>
Log4j2:按天滚动,文件达到 10MB 触发滚动,按索引分片并保留 30 个归档。
<Configuration status="WARN">
<Appenders>
<RollingFile name="RollingFile"
fileName="logs/app.log"
filePattern="logs/app.%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</Appenders>
<Loggers><Root level="INFO"><AppenderRef ref="RollingFile"/></Root></Loggers>
</Configuration>
系统级 logrotate(对长期运行且可能不主动关闭文件的进程做兜底):
/var/log/myapp/*.log {
daily
rotate 30
compress
missingok
notifempty
create 640 root root
}
集中式采集:
三 目录与权限建议
四 选择建议与注意事项