spring-boot中如何使用logback+slf4j实现日志记录

1.logback介绍

java中比较流行的日志框架有log4j、logback等。这两个框架是由同一个作者开发的,后者对前者做了进一步的改善。而 slf4j(Simple Logging Facade for Java) 则对日志系统中常用的接口进行了抽象,logback 和 log4j 对slf4j 进行了实现。

本文将介绍在spring-boot中如何使用logback+slf4j实现日志的记录。

2. 用法

2.1 添加依赖

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

spring-boot-starter-web 包含了spring-boot-starter,spring-boot-starter中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 Logback+SLF4J。所以我们只需要引入web组件即可

2.2 使用

我们先来看下logback的简单使用,配置文件在稍后的章节中介绍。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyServiceImpl implements MyService {
  private static final Logger LOGGER = LoggerFactory.getLogger(MyServiceImpl.class);
  @Override
  public void doStuff(final String value) {
    LOGGER.debug("doStuff needed to debug - {}", value);
    LOGGER.info("doStuff took input - {}", value);
    LOGGER.warn("doStuff needed to warn - {}", value);
    LOGGER.error("doStuff encountered an error with value - {}", value);
  }
}

2.3 xml配置

新建一个名为logback-spring.xml的日志配置文件,将xml放至 src/main/resource下面。

xml文件示例:


<configuration>
    
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="APP_NAME" value="euler-platform" />
    <property name="LOG_PATH" value="${user.home}/${APP_NAME}/logs" />
    <property name="LOG_FILE" value="${LOG_PATH}/application.log" />
  
    <appender name="APPLICATION"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE}file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <maxHistory>7maxHistory>
            <maxFileSize>50MBmaxFileSize>
            <totalSizeCap>20GBtotalSizeCap>
        rollingPolicy>
    appender>

    <root level="INFO">
        <appender-ref ref="APPLICATION" />
    root>
  
configuration>

示例文件配置的结果是,把日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件。

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

spring-boot中如何使用logback+slf4j实现日志记录_第1张图片
元素

即记录器,作用是控制日志的输出级别与日志是否输出。只接受一个必需的name属性,一个可选的level属性和一个可选的additivity属性。 level属性的值可以为TRACE,DEBUG,INFO,WARN,ERROR,ALL或OFF。元素可以包含零个或多个元素,用于将每个appender都添加到指定的logger中。

元素

即输出端,作用是指定日志的输出方式(输出到控制台、文件等)。

该元素有两个必需属性name和class。 name属性指定appender的名称,而class属性用于指定日志的输出方式。作为应用日志,一般使用的是 例子中的RollingFileAppender,就是将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件。

元素有以下子元素:

  • :被写入的文件名
  • :如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • :当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类。例子中用了SizeAndTimeBasedRollingPolicy,可以基于时间、大小两个维度Rolling策略。

元素

元素是特别的一个记录器,根记录器。 它支持单个属性,即level属性。此外,由于根记录器已被命名为“ROOT”,因此它也不允许使用name属性。level属性的值可以是不区分大小写的字符串TRACE,DEBUG,INFO,WARN,ERROR,ALL或OFF之一, 元素可以包含零个或多个元素, 这样引用的每个appender都被添加到根记录器中

你可能感兴趣的:(java)