本文已参与「新人创作礼」活动,一起开启掘金创作之路。
稍有学习,但项目中使用还需要更深入的测试了解
集成
//实际项目不需要像如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
//spring-boot-starter-web包含spring-boot-starter
//spring-boot-starter包含spring-boot-starter-logging
//所以pom中只要依赖如下即可使用logbak+slf4j,不许重复依赖spring-boot-starter-logging
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
xml配置
配置文件位置->resources目录下
配置文件名->logback-config.xml
引用配置文件->properties中配置logging.config=classpath:logback-config.xml
xml配置内容解释
configuration[根元素1]
property[元素:属性变量0~*]
name[属性1]
level[属性0~1-TRACE/DEBUG/INFO/WARN/ERROR/ALL/OFF]
additivity[属性0~1-true/false]
appender[元素:附加器0~*]
name[属性1:apeender名称]
class[属性1:指定要实例化的apeender类的完全限定名称]
layout[元素0~1]
encoder[元素0~*]
class[属性1]
pattern[元素:控制输出日志的格式]
charset[元素]
filter[元素0~*]
class[属性1-LevelFilter/ThresholdFilter]
logger[元素:记录器0~*]
appender-ref[元素0~*:引用的每个appender都被添加到logger]
root[元素:根记录器0~1]
level[属性1-TRACE/DEBUG/INFO/WARN/ERROR/ALL/OFF]
appender-ref[元素0~*:引用的每个appender都被添加到根记录器]
示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<!--0~*常量-->
<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n"/>
<!--0~*appender=>负责写日志的组件-->
<!--ConsoleAppender=>控制台打印-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--日志过滤=>ThresholdFilter过滤低于level的日志/LevelFilter接受拒绝符合或不符合level的日志-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>-->
<encoder><!--class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"-->
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset><!--class="java.nio.charset.Charset"-->
</encoder>
</appender>
<!--RollingFileAppender=>滚动记录日志-->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append><!--是否追加默认true-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件名-->
<fileNamePattern>logs/project_info_%d.%i.log</fileNamePattern>
<!--最多保留文件数量-->
<maxHistory>10</maxHistory>
<!--日志文件最大占用空间-->
<totalSizeCap>1GB</totalSizeCap>
<!--活动文件大小默认10MB-->
<maxFileSize>1KB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/project_error_%d.%i.log</fileNamePattern>
<maxHistory>20</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--0~*记录器=>设置一个包或者类的日志打印级别additivity默认true-->
<logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="info"/>
</logger>
<!--0~1root-->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<springProfile name="test">
<root level="INFO">
<appender-ref ref="STDOUT"/>
<!--<appender-ref ref="info"/>
<appender-ref ref="error"/>-->
</root>
</springProfile>
</configuration>