Logback日志框架和SpringBoot整合

日志框架LogBack介绍

LogBack是基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用,logback当前分成三个模块:

  • logback-core: 日志组件的核心部分,使用logback组件必须引入的jar.
  • logback-classic: log4j的一个改良版本,同时它完整提供了slf4j API是我们可以很方便地更换成其他日志系统如log4j。
  • logback-access: 访问模块与Servlet容器集成提供通过HTTP来访问日志的功能。

Logback 的优点

  1. 更快的实现:重写了内核,在一些关键执行路径上性能提升了10倍以上,初始化内存加载也更小了 。
  2. Logback-classic实现了SLF4j,可以随意切换其他日志框架。
  3. 当配置文件修改了,Logback-classic能自动重新加载配置文件;扫描过程快且安全,它并不需要另外创建一个扫描线程。

Logback的核心对象

  • Logger:日志记录器
  • Appender:指定日志输出的目的地目的地可以是控制台,文件
  • Layout:日志布局 格式化日志信息的输出
    日志级别:DEBUG < INFO < WARN < ERROR

logback示例

  1. 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>
  1. 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 课程笔记,仅供学习使用,不作为任何商业行为,如有侵权,请联系删除!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值