在使用springboot搭建项目时,它内部引入了logback作为日志框架,默认只有info级别的控制台日志输出
在线上环境都是输出到文件的,并且每日一个文件夹,自动更换文件(文件内容超出一定大小,自动切分)并且以递增的序号排列,不同级别的日志分文件输出,在SpringBoot项目中如何配置呢?
在springboot的配置文件里.yml或.properties文件内配置log的配置文件路径,如下:
然后在resources下创建logback-spring.xml文件
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<!-- Log file path -->
<property name="log.path" value="E:/home/logs/seq-test" />
<!-- Console log output -->
<appender name="console"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n
</pattern>
</encoder>
</appender>
<!-- Log file debug output -->
<appender name="fileRolling_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
</pattern>
</encoder>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level>
<onMatch>DENY</onMatch> <onMismatch>NEUTRAL</onMismatch> </filter> -->
</appender>
<!-- Log file error output -->
<appender name="fileRolling_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="info">
<!--{dev.start}-->
<!-- <appender-ref ref="console" />-->
<!--{dev.end}-->
<!--{alpha.start}
<appender-ref ref="fileRolling_info" />
{alpha.end}-->
<!-- {release.start}-->
<appender-ref ref="fileRolling_info" />
<!-- {release.end}-->
<appender-ref ref="fileRolling_error" />
</root>
<!-- Framework level setting -->
<include resource="config/logger-core.xml" />
<!-- Project level setting -->
<!-- <logger name="your.package" level="DEBUG" /> -->
<logger name="org.springframework" level="INFO"></logger>
<logger name="org.mybatis" level="INFO"></logger>
</configuration>
配置了三种策略,
1 控制台,
2输出到日志文件并且级别是info,文件大小超过50M后自动切割,写到下个文件
3 输出到日志文件并且级别是error,文件大小超过50M后自动切割,写到下个文件
我们来看一下效果,如下图,每天一个文件夹,各自的日志文件从0升序生成。
info开头的这个日志文件记录的有info级别的也有error级别的
error开头的日志文件只有error级别的日志
我们可以把切分文件的限制改小一点,测一下自动切分文件