Logback日志框架和SpringBoot整合
日志框架LogBack介绍
LogBack是基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用,logback当前分成三个模块:
- logback-core: 日志组件的核心部分,使用logback组件必须引入的jar.
- logback-classic: log4j的一个改良版本,同时它完整提供了slf4j API是我们可以很方便地更换成其他日志系统如log4j。
- logback-access: 访问模块与Servlet容器集成提供通过HTTP来访问日志的功能。
Logback 的优点
- 更快的实现:重写了内核,在一些关键执行路径上性能提升了10倍以上,初始化内存加载也更小了 。
- Logback-classic实现了SLF4j,可以随意切换其他日志框架。
- 当配置文件修改了,Logback-classic能自动重新加载配置文件;扫描过程快且安全,它并不需要另外创建一个扫描线程。
Logback的核心对象
- Logger:日志记录器
- Appender:指定日志输出的目的地目的地可以是控制台,文件
- Layout:日志布局 格式化日志信息的输出
日志级别:DEBUG < INFO < WARN < ERROR
logback示例
- pom.xml 文件配置
由于logback-classic 依赖于slf4j-api,所以pom 中需要添加slf4j-api 的依赖。
<!--slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.28</version>
</dependency>
<!--logback-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.11</version>
</dependency>
- logback-spring.xml 配置示例
常见logback 过滤器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level> //只输出INFO级别的日志
<onMatch>ACCEPT</onMatch> //匹配就接受
<onMismatch>DENY</onMismatch> //不匹配就拒绝
</filter>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level> //接受所有INFO及以上级别的日志,WARN、ERROR
</filter>
xml 配置完整示例:
整个配置文件,根节点是configuration,子节点是:appender
logger 、root;root节点必须放到最后。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<encoder>
<pattern>[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n</pattern>
</encoder>
</appender>
<appender name="D" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Append>true</Append>
<File>/logs/log.log</File>
<encoder>
<pattern>%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<appender name="E" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>/logs/error.log</File>
<Append>true</Append>
<encoder>
<pattern>%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<root level="debug">
<appender-ref ref="stdout"/>
<appender-ref ref="D"/>
<appender-ref ref="E"/>
</root>
</configuration>
更多配置查看:logback官网
Log4j日志转换为logback在线工具
logback转化器:https://logback.qos.ch/translator/
支持log4j.properties转换为logback.xml,不支持 log4j.xml转换为logback.xml
SpringBoot2.x日志讲解和自定义Logback配置
如果pom.xml 继承一下dependency,默认就使用logback.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在application.properties 或者application.yml 中,可以自定义logging.file.name 或者 logging.file.path,指定logback对应的日志配置文件.
PS:在使用logback 时,可以结合lombok 在类上加上@slf4j 便能使用log 对象,不需要再代码中单独定义,使代码更加简洁。
本文整理自51cto 课程笔记,仅供学习使用,不作为任何商业行为,如有侵权,请联系删除!