在 Java 中,“滚动日志”通常指日志文件按大小、时间等策略切割(roll over),避免单个日志文件无限变大。常用方案有 JDK 自带 java.util.logging、Log4j2、Logback。下面分别说明。
JDK 自带的 java.util.logging 支持基于大小的滚动(不原生支持按时间)。
# logging.properties
handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern = app%g.log
java.util.logging.FileHandler.limit = 1024000 # 单个文件 1MB
java.util.logging.FileHandler.count = 5 # 最多 5 个文件
java.util.logging.FileHandler.formatter = java.util.util.logging.SimpleFormatter
%g:文件编号app0.log, app1.log …<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<RollingFile name="RollingFile" fileName="app.log"
filePattern="app-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d %p %c{1.} - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
| 方式 | 按大小 | 按时间 | 推荐度 |
|---|---|---|---|
| JDK Logger | ✅ | ❌ | ⭐ |
| Logback | ✅ | ✅ | ⭐⭐⭐⭐⭐ |
| Log4j2 | ✅ | ✅ | ⭐⭐⭐⭐ |
如果你用的是 Spring Boot / 某个框架 / 特定日志库,可以告诉我,我可以给你更精确的配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。