SpringBoot自定义Logback输出
背景说明
- springboot默认集成了logback的日志依赖,所以无需再次引入相关依赖
- springboot默认的日志配置不支持输出到指定文件及配置相关策略
- 该文章旨在快速配置,不会对细节做详细阐述
配置流程
- 新建logback-spring.xml配置文件,配置位置在resources根目录即可
- 在application.properties或者application.yml引用配置
# 应用名称,生成的日志名称引用该配置
spring.application.name=mybatis-pro
# 日志输出级别
root.log.level=debug
# 文件日志输出路径
root.log.path=/tmp/logs
# 文件日志保留时间,此处以天为单位
root.log.max-history=30
# 日志配置文件
logging.config=classpath:logback-spring.xml
- 详细logback-spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<springProperty name="app.name" source="spring.application.name" scope="context"/>
<springProperty name="root.log.level" source="root.log.level" defaultValue="INFO" scope="context"/>
<springProperty name="root.log.path" source="root.log.path" defaultValue="/tmp/logs" scope="context"/>
<springProperty name="root.log.max-history" source="root.log.max-history" defaultValue="30" scope="context"/>
<property name="console.log.pattern"
value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %green(${PID:- }) --- %cyan([%15.15thread]) %magenta([%-30.30logger{29}]) %blue(%-5L) : %msg%n"/>
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level ${PID:- } --- [%15.15thread] [%-30.30logger{29}] %-5L : %msg%n"/>
<appender name="CONSOLE_LOG" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${console.log.pattern}</pattern>
</encoder>
</appender>
<appender name="FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${root.log.path}/${app.name}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${root.log.path}/${app.name}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>${root.log.max-history}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>${root.log.level}</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
</appender>
<appender name="ASYNC_FILE_LOG" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1024</queueSize>
<appender-ref ref="FILE_LOG"/>
<neverBlock>true</neverBlock>
</appender>
<logger name="org.springframework" level="info"/>
<logger name="_org.springframework" level="info"/>
<root>
<level value="${root.log.level}"/>
<appender-ref ref="CONSOLE_LOG"/>
<appender-ref ref="ASYNC_FILE_LOG"/>
</root>
</configuration>
输出展示
