如题:springboot+logback日志不能每天切割出新的日志文件,全部的日志在一个文件里。
logback配置如下,已经用了 SizeAndTimeBasedRollingPolicy 滚动策略,但是日志不会自动按天切分,只有在重启的时候才会重新读取当天日期,生成新的日志文件。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- <pattern>
%d - %msg%n <!– 控制台打印日志文件体 时间-信息 –>
</pattern>-->
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</layout>
</appender>
<!-- info日志 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch> <!-- 如果命中就禁止这条日志 -->
<onMismatch>ACCEPT</onMismatch> <!-- 如果没有命中就使用这条规则 -->
</filter>
<encoder>
<!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 设置info日志路径 日志文件输出的文件名-->
<fileNamePattern>../logs/%d{yyyy-MM}/api-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--日志文件最大的大小-->
<maxFileSize>5MB</maxFileSize>
</rollingPolicy>
</appender>
<!-- error日志 -->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 设置error日志路径 -->
<fileNamePattern>../logs/%d{yyyy-MM}/api-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--日志文件最大的大小-->
<maxFileSize>5MB</maxFileSize>
</rollingPolicy>
</appender>
<!-- api访问日志 -->
<appender name="apiTopicLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>../logs/%d{yyyy-MM}/api_topic-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<!--日志文件最大的大小-->
<maxFileSize>5MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 1. 输出SQL 到控制台和文件-->
<logger name="org.hibernate.SQL" additivity="false">
<level value="DEBUG"/>
<!-- <appender-ref ref="fileInfoLog"/>-->
<appender-ref ref="consoleLog"/>
</logger>
<!-- 2. 输出SQL 的参数到控制台和文件-->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false" level="TRACE">
<level value="TRACE"/>
<!-- <appender-ref ref="fileInfoLog"/>-->
<appender-ref ref="consoleLog"/>
</logger>
<logger name="apiTopic" additivity="false">
<!-- 添加appender -->
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="apiTopicLog"/>
<appender-ref ref="consoleLog"/>
</logger>
<!-- 设置默认日志级别为INFO -->
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>