springboot logback日志配置-不同级别的日志放不同文件
硅谷探秘者
2021-11-22发表
框架
0
0
1620
一、自定义logback-spring.xml配置文件
logback-spring.xmllogback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 日志输出路径 -->
<springProperty scope="context" name="log.path" source="log.path" defaultValue=""/>
<!-- 日志输出级别 -->
<springProperty scope="context" name="log.level" source="log.level" defaultValue=""/>
<!-- 文件输出格式 -->
<property name="PATTERN"
value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger %line --%mdc{client} %msg%n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="file-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 文件路径 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${log.path}/debug/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="file-info" 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.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${log.path}/info/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="file-warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 文件路径 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${log.path}/warn/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="file-error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<!-- 文件路径 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${log.path}/error/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
<logger name="com.mchange" level="ERROR"/>
<logger name="org.mybatis" level="DEBUG"/>
<logger name="org.springframework" level="WARN"/>
<logger name="org.apache.zookeeper" level="INFO"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.ResultSet" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="org.apache.http.wire" level="OFF"/>
<logger name="org.apache.commons" level="INFO"/>
<logger name="org.apache.catalina" level="ERROR"/>
<logger name="com.ulisesbocchio.jasyptspringboot" level="WARN"/>
<logger name="com.alibaba.nacos.client.naming" level="OFF"/>
<root level="${log.level}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="file-debug"/>
<appender-ref ref="file-info"/>
<appender-ref ref="file-warn"/>
<appender-ref ref="file-error"/>
</root>
</configuration>
不同级别的日志由不同的appender
处理。
二、application.yml配置
日志的文件存放目录等日志级别在application.yml中配置
application.yml
log:
path: D:\data\log #日志输出路径
level: WARN # 输出日志的等级,TRACE < DEBUG < INFO < WARN < ERROR
三、onMatch和onMismatch属性说明
onMatch和onMismatch都有三个属性值,分别为Accept
、DENY
和NEUTRAL
。
分别介绍这两个配置项的三个属性值:
- onMatch=”ACCEPT” 表示匹配该级别及以上
- onMatch=”DENY” 表示不匹配该级别及以上
- onMatch=”NEUTRAL” 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
- onMismatch=”ACCEPT” 表示匹配该级别以下
- onMismatch=”NEUTRAL” 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
- onMismatch=”DENY” 表示不匹配该级别以下的