最推荐使用Logback实现日志文件输出与滚动,支持按时间(如每天)和大小(如10MB)双策略滚动归档,保留30天,配置简洁、性能好、功能全。

Java 中日志输出到文件并支持滚动,最常用、最推荐的方式是使用 Logback(SLF4J 的原生实现),它配置简洁、性能好、功能全。下面以 Logback 为例,说明如何配置日志写入文件并按大小或时间滚动。
1. 添加依赖(Maven)
确保项目中引入了 Logback(无需额外引 SLF4J API,Spring Boot 项目通常已内置):
<dependency><groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
2. 配置 logback-spring.xml(推荐放于 src/main/resources/)
以下是一个典型配置:按天归档 + 单日文件大小限制 + 最多保留 30 天:
<configuration><property name="LOG_PATH" value="logs"/>
<property name="LOG_FILE" value="${LOG_PATH}/app.log"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<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>
关键点说明:
立即学习“Java免费学习笔记(深入)”;
- TimeBasedRollingPolicy:按日期滚动(如 app.2024-06-01.log)
-
SizeAndTimeBasedFNATP:当日志超过
maxFileSize(如 10MB)时,自动切分并加序号(如 app.2024-06-01.0.log、app.2024-06-01.1.log) - maxHistory=30:只保留最近 30 天的归档目录(含所有 .i.log 文件)
- 日志路径
logs/会自动创建,无需手动建目录
3. 按文件大小单独滚动(不按天)
若只需按大小滚动(比如单个文件最大 100MB,最多存 10 个):
<appender name="SIZE_ONLY" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app-size.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/app-size.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d %p %c - %m%n</pattern>
</encoder>
</appender>
4. 注意事项与调试技巧
- 配置文件名必须是
logback.xml或logback-spring.xml(后者支持 Spring Boot 的 profile 功能) - 修改配置后需重启应用才能生效(Logback 不热加载 XML)
- 如果日志没生成,检查
logs/目录是否有写权限,或查看控制台是否报RollingFileAppender error - 可在 application.yml 中设置
logging.config=classpath:logback-spring.xml显式指定路径 - 用
%i表示滚动索引,%d{...}表示日期,二者可共存(如上面的时间+大小组合)
Logback 的滚动策略灵活,日常推荐用「时间 + 大小」双触发,兼顾可读性与磁盘安全。不复杂但容易忽略细节,配对即可稳定运行。


















