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 组件即可。


    org.springframework.boot
    spring-boot-starter-web

二、默认配置

默认情况下 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 配置如下:


 
  
    
    
      %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
    
  
 
  
 
  
  
            
    
    
  

3.1、元素

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

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

SpringBoot使用logback日志框架超详细教程_第1张图片

configuration元素

3.2、元素

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

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

元素可以包含零个或多个元素。

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

你可能感兴趣的:(spring,boot,logback,单元测试)