SpringBoot使用logback日志框架超详细教程

前言

项目中日志系统是必不可少的,目前比较流行的日志框架有 log4j、logback 等,可能大家还不知道,这两个框架的作者是同一个人,Logback 旨在作为流行的 log4j 项目的后续版本,从而恢复 log4j 离开的位置。

另外 slf4j(Simple Logging Facade for Java) 则是一个日志门面框架,提供了日志系统中常用的接口,logback 和 log4j 则对slf4j 进行了实现。

我们本文将讲述如何在 SpringBoot 中应用 logback+slf4j 实现日志的记录。

为什么使用logback

  • Logback 是log4j 框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持 SLF4J。
  • Logback 的定制性更加灵活,同时也是 SpringBoot 的内置日志框架。

开始使用

一、添加依赖

实际开发中我们直接引入spring-boot-starter-web依赖即可,因为spring-boot-starter-web包含了spring-boot-starter
spring-boot-starter包含了spring-boot-starter-logging,所以我们只需要引入 web 组件即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

二、默认配置

默认情况下 SpringBoot 将日志输出到控制台,不会写到日志文件。

如果要编写除控制台输出之外的日志文件,则需在 application.properties 中设置 logging.file 或 logging.path 属性。
注:二者不能同时使用,如若同时使用,则只有 logging.file 生效。

  • logging.file=文件名(设置文件,可以是绝对路径,也可以是相对路径。例:logging.file=my.log)
  • logging.path=日志文件路径(设置目录,会在该目录下创建spring.log文件,并写入日志内容。例:logging.path=/var/log)
  • logging.level.包名=指定包下的日志级别
  • logging.pattern.console=日志打印规则

可以看到这种方式配置简单,但是能实现的功能也非常有限,如果想要更复杂的需求,就需要下面的定制化配置了。

三、logback-spring.xml详解

SpringBoot 官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,将 xml 放至src/main/resource下面。

也可以使用自定义的名称,比如logback-config.xml,只需要在 application.properties 文件中使用logging.config=classpath:logback-config.xml指定即可。

在讲解 logback-spring.xml之前我们先来了解三个单词:

  • Logger(记录器)
  • Appenders(附加器)
  • Layouts(布局)

Logback 基于三个主要类:Logger,Appender和Layout。

这三种类型的组件协同工作,使开发人员能够根据消息类型和级别记录消息,并在运行时控制这些消息的格式以及报告的位置。

首先给出一个基本的 xml 配置如下:

<configuration>
 
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
 
  <logger name="chapters.configuration" level="INFO"/>
 
  <!-- Strictly speaking, the level attribute is not necessary since -->
  <!-- the level of the root level is set to DEBUG by default.       -->
  <root level="DEBUG">          
    <appender-ref ref="STDOUT" />
  </root>  
  
</configuration>

3.1、<configuration>元素

logback.xml 配置文件的基本结构可以描述为<configuration>元素,包含零个或多个<appender>元素,后跟零个或多个<logger>元素,后跟最多一个<root>元素(也可以没有)。

下图说明了这种基本结构:

configuration元素

3.2、<logger>元素

<logger>元素只接受一个必需的 name 属性,一个可选的 level 属性和一个可选的 additivity 属性,允许值为 true 或 false 。

level 属性的值允许一个不区分大小写的字符串值 TRACE,DEBUG,INFO,WARN,ERROR,ALL 或 OFF。

<logger>元素可以包含零个或多个<appender-ref>元素。

这样引用的每个 appender 都被添加到指定的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值