专业的JAVA编程教程与资源

网站首页 > java教程 正文

详细介绍SpringBoot默认日志框架LogBack的配置?

temp10 2024-11-27 21:04:59 java教程 17 ℃ 0 评论

Logback是一个功能强大的Java日志框架,它是基于Log4j框架进行了改进升级,提供了更加丰富的高性性能日志处理支持。并且在SpringBoot中Logback提供了更加灵活的配置方式,我们可以通过XML或者是Groovy脚本对其进行配置。下面我们就来介绍一下关于Logback的操作配置。

创建 Logback 配置文件

Logback的日志配置文件通常被命名为logback.xml,一般是位于src/main/resources 目录中,包含了日志的输出格式、输出的位置、以及日志级别等信息的配置。如下所示。

详细介绍SpringBoot默认日志框架LogBack的配置?

<configuration>
    <!-- 定义日志输出格式 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    
    <!-- 定义日志输出位置和日志级别 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

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

其中参数介绍

  • <conversionRule>:定义日志输出格式的转换规则。
  • <property>:定义配置属性,用于设置日志输出格式。
  • <appender>:定义日志的输出目标,可以是控制台、文件、数据库等。
  • <encoder>:定义日志的格式化方式,通常使用<pattern>元素指定格式模板。
  • <root>:定义根日志记录器,设置日志级别和日志输出目标。

我们可以通过自己对于日志的需求来修改Logback文件中提供的各种配置项,用来定义不同的日志输出格式、输出位置等。例如,可以添加文件输出器,将日志输出到指定的文件中,也可以按照不同的日志级别进行输出,方便在生产环境定位问题。

日志记录器的使用

使用Logback框架来记录日志实现非常简单,只需要在需要的地方添加相应的调用方法就可以了。如下所示。

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

public class Example {
    private static final Logger logger = LoggerFactory.getLogger(Example.class);

    public void someMethod() {
        // 记录不同级别的日志
        logger.trace("Trace level message");
        logger.debug("Debug level message");
        logger.info("Info level message");
        logger.warn("Warning level message");
        logger.error("Error level message");
    }
}

如何自定义一个appender?

自定义Appender是在Logback中中提供的高级使用方式,它允许将自定义的日志输出到指定的目标中,例如可以将日志输出到数据库中,消息队列中、或者是输出到远程日志存储中。如下所示,展示了如何将日志输出到自定义的控制台中。

import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.Layout;
import ch.qos.logback.core.encoder.Encoder;
import ch.qos.logback.core.spi.DeferredProcessingAware;

public class CustomAppender<E> extends AppenderBase<E> {

    private Encoder<E> encoder;
    private Layout<E> layout;

    @Override
    protected void append(E eventObject) {
        // 使用 Encoder 将日志事件格式化为字符串
        String formattedEvent = encoder.encode(eventObject);

        // 输出到控制台
        System.out.print(formattedEvent);

        // 输出到文件
        // (这里省略了将日志输出到文件的逻辑)
    }

    @Override
    public void start() {
        // 验证配置是否正确
        if (encoder == null) {
            addError("No encoder set for the appender named [" + name + "].");
            return;
        }
        if (layout == null) {
            addError("No layout set for the appender named [" + name + "].");
            return;
        }
        super.start();
    }

    @Override
    public void stop() {
        super.stop();
    }

    public void setEncoder(Encoder<E> encoder) {
        this.encoder = encoder;
    }

    public void setLayout(Layout<E> layout) {
        this.layout = layout;
    }
}

在上面的例子中,创建了一个CustomAppender的类,它继承了Logback的AppenderBase基础类,并且在append()方法中,通过Encode而将日志的进行了格式化,然后将格式化之后的日志输出到控制台中。并且在start()方法中,也验证了配置方式的正确性如果没有设置 encoderlayout,则会抛出错误。如下所示就是在Logback的配置中需要添加的东西。

<configuration>
    <!-- 定义自定义的 Appender -->
    <appender name="customAppender" class="com.example.CustomAppender">
        <!-- 设置 Encoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 将自定义的 Appender 添加到根日志记录器 -->
    <root level="INFO">
        <appender-ref ref="customAppender"/>
    </root>
</configuration>

上面这个配置中,创建了customAppender的自定义日志处理Appender,而且设置了日志格式化的模式风格,通过配置文件将处理器添加到日志配置中。

总结

这样我们就完成了自定义的Appender的添加以及配置操作,当然除了将日志输出到文件、控制台中,我们还可以再Appender中添加数据库相关的逻辑、或者是消息中间件相关的逻辑,将日志记录到数据库中,由于篇幅有限,这里不展示记录到数据库中的操作,在下一篇分享中会为读者介绍如何通过Appender操作将日志写入到数据库或者消息中间件中。敬请期待。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表