集成到springboot的yml格式配置文件的示例:
logging:
config: classpath:logback-spring.xml
level:
dao: debug
org:
mybatis: debug
logback-spring.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<property name="LOG_INFO_HOME" value="/data/www/admin/log/shopping" />
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</appender>
<appender name="INFO-LOG"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 打印info日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch><!-- 匹配到ERROR就拒绝 -->
<onMismatch>ACCEPT</onMismatch><!-- 没有匹配到ERROR就接受 -->
</filter>
<encoder>
<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
</encoder>
<!--滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径 -->
<fileNamePattern>${LOG_INFO_HOME}/info/info.%d.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender>
<appender name="ERROR-LOG"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 打印error日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
</encoder>
<!--滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径 -->
<fileNamePattern>${LOG_INFO_HOME}/error/error.%d.log</fileNamePattern>
</rollingPolicy>
<!-- 此日志文档只记录debug级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 设置info级别打印格式 -->
<root level="info">
<appender-ref ref="CONSOLE-LOG" />
<appender-ref ref="INFO-LOG" />
<appender-ref ref="ERROR-LOG" />
</root>
<!-- 设置包打印日志级别 -->
<logger name="com.ycdz.mapper" level="debug" additivity="false">
<appender-ref ref="CONSOLE-LOG" />
</logger>
</configuration>
标签层级关系说明
<property>
设置变量,可以在下面的配置中引用变量名称${变量名}
<root>
标签,必填标签,用来指定最基础的日志输出级别
<appender-ref>
标签,添加append
<append>
标签,通过使用该标签指定日志的收集策略
-
name
属性指定appender命名,命名从root标签的appender-ref而来 -
class
属性指定输出策略,通常有两种,控制台输出和文件输出,文件输出就是将日志进行一个持久化。ConsoleAppender将日志输出到控制台 -
<filter>
标签,通过使用该标签指定过滤策略<level>
标签指定过滤的类型
-
<encoder>
标签,使用该标签下的标签指定日志输出格式<rollingPolicy>
标签指定收集策略,比如基于时间进行收集<fileNamePattern>
标签指定生成日志保存地址,通过这样配置已经实现了分类分天手机日志的目标了
-
logger属性:
- name:用来指定受此logger约束的某一个包或者具体的某一个类
- level:用来设置打印级别,大小写无关(最常用的几种):DEBUG, INFO, WARN, ERROR
级别分为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL
只能展示大于或等于设置的日志级别的日志;也就是说springboot默认级别为INFO,那么在控制台展示的日志级别只有INFO 、WARN、ERROR、FATAL
logback的additivity=“false” 与root关系
它是 子Logger 是否继承 root的Logger 的 输出源(appender) 的标志位。
具体说,默认情况下子Logger会继承root的Logger的appender,也就是说子Logger会在root的Logger的appender里输出。
参考
异步日志输出
https://blog.csdn.net/Dome_/article/details/99713648