自定义配置
总体结构
- 使用
<appender>
元素定义输出端,其中<encoder>
指定输出样式,<filter>
指定过滤规则,带有policy
的如<rollingPolicy>
则指定输出规则(如输出的日志文件按什么逻辑拆分等) <root>
或<logger>
元素可指定根logger或某个指定logger的输出端、输出的日志等级、是否继续传递给上级logger处理等。
代码实例
src/main/resources/logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 引入Spring Boot的默认样式配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 使用Spring Boot的自定义配置 -->
<springProperty scope="context" name="logging.path" source="language-trainer.logging.path"/>
<!-- 定义一个控制台输出端 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 定义一个文件输出端 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>90</maxHistory>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/%d{yyyy-MM-dd}.error.log</fileNamePattern>
<maxHistory>365</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 根logger指定输出端 -->
<root>
<appender-ref ref="console"/>
<appender-ref ref="file"/>
<appender-ref ref="errorFile"/>
</root>
</configuration>
application.yml
logging:
level:
root: info
language-trainer:
logging:
path: /var/logs/
分profile配置
将配置嵌入在<springProfile>
元素中,即可将配置按profile区分
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="logging.path" source="language-trainer.logging.path"/>
<springProfile name="test,prod">
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>90</maxHistory>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/%d{yyyy-MM-dd}.error.log</fileNamePattern>
<maxHistory>365</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
</springProfile>
<springProfile name="prod">
<root>
<appender-ref ref="file"/>
<appender-ref ref="errorFile"/>
</root>
</springProfile>
<springProfile name="test">
<root>
<appender-ref ref="file"/>
</root>
</springProfile>
</configuration>
logger配置
<!-- 指定某个logger,配置等级以及是否向上级logger继续传递 -->
<logger name="com.tinktek.odm" level="debug" additivity="false">
<appender-ref ref="console"/>
</logger>
<root level="info">
<appender-ref ref="console"/>
</root>
pattern详解
显示元素
%d
日期时间%p
日志等级%t
线程名称%logger
logger名称%m
日志信息%n
换行${PID}
进程号,Spring Boot加强
格式控制
%d{yyyy-MM-dd HH:mm:ss.SSS}
日期格式%logger{39}
logger名称缩略,一般将前面的包名缩到一个字母,以满足最大长度要求%20logger
最小长度20,右对齐,左边补空格%-20logger
最小长度20,左对齐,右边补空格%.30logger
最大长度30,超出长度则截断前面的内容%.30logger
最大长度30,超出长度则截断后面的内容%20.30logger
最小长度规则与最大长度规则同时定义
颜色控制
导入配置
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
表达式例子
%clr([%t]){faint}`
可用颜色
- blue
- cyan
- faint
- green
- megenta
- red
- yellow
Spring Boot默认pattern
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<pattern>${FILE_LOG_PATTERN}</pattern>
参考文档
PREVIOUSMaven阿里云镜像配置