SpringBoot整合logback
集成logback
依赖包管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback.version}</version> </dependency>
logback-access: logback访问模块,提供了基于http请求的访问日志记录功能;可以记录每个请求的详细信息,包括请求方法,URL,响应状态码等 logback-classic: 是log4j的改进版;提供了更强大的日志功能,并且向下兼容log4j;还支持slf4j,可以在不修改代码的情况下将应用程序从一个日志框架切换到另一个日志框架 logback-core: logback的核心模块;提供了基本的日志功能,它支持多种输出格式和输出目标,包括控制台输出,文件输出和 Socket 输出;logback-core 可以和其他日志框架集成;比如log4j和JDK Logging
|
自定义日志配置文件内容解析
在工程下resources目录下创建名为logback-spring.xml的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| <?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>demo</contextName> <property name="log.pattern" value="[%d{'MM-dd HH:mm:ss,SSS'}] %level [%thread] %logger{0}[%line] - %msg%n"/> <property name="log.charset" value="UTF-8"/> <property name="log.level" value="INFO"/> <property name="log.path" value="logs"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <charset>${log.charset}</charset> <pattern>${log.pattern}</pattern> </encoder> </appender>
<appender name="COMMON" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/common.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/common.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <charset>${log.charset}</charset> <pattern>${log.pattern}</pattern> </encoder> </appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/error.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <charset>${log.charset}</charset> <pattern>${log.pattern}</pattern> </encoder> </appender>
<appender name="DB" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/db.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/db.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <charset>${log.charset}</charset> <pattern>${log.pattern}</pattern> </encoder> </appender>
<logger name="com.example.demo.dao.mapper" level="DEBUG" additivity="false"> <appender-ref ref="DB"/> <appender-ref ref="ERROR"/> </logger>
<root level="${log.level}"> <appender-ref ref="CONSOLE"/> <appender-ref ref="COMMON"/> <appender-ref ref="ERROR"/> </root>
</configuration>
|
解析配置
XML 配置文件中基本结构:
以<configuration>开头;包含可以有零个或者多个 <appender元素;有零个或者多个 <logger>元素,包含最多一个 <root> 元素
1<configuration>
configuration包含三个属性
- scan: 当此属性值为
true时,配置文件如果发生改变将会被重新加载,默认值为true
- scanPeriod: 设置检测配置文件是否有修改时间间隔,默认
一分钟,默认时间单位是毫秒;当scan为true,此属性生效
- debug: 当此属性设置为
true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false