SpringBoot日志框架的使用

前置知识:

推荐阅读:

(Java日志系列到这篇算是完结了吧,完结撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。)

logging-starter概述

SpringBoot使用日志功能依赖于

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

实际上,不需要导入这个依赖,因为springboot的核心spring-boot-starter存在对spring-boot-starter-logging的传递依赖。

logging-stater依赖
  • jul-to-slf4j:将JUL转为SLF4J(使用SLF4J作为日志门面)
  • log4j-to-slf4j:将LOG4J2日志门面转为SLF4J
  • logback-classic:使用logback作为默认日志实现

SpringBoot 2.0 之前还会有一个log4j-over-slf4j用来转换log4j,2.0之后就取消了对log4j的支持。(虽然可以通过starter使用log4j,但已经不推荐了)

可以看出,SpringBoot使用SLF4J作为日志门面,logback作为默认日志实现。

如果是其他日志门面和日志框架会自动桥接至SLF4J。

日志相关配置

SpringBoot配置

这里使用properties语法,yaml也只是转换一下格式

# 设置自定义logger的日志级别
logging.level.com.rhett.FileLogger=trace
# 设置console appender的pattern
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] --- %m%n

# 指定日志文件存放的目录,默认的文件名是spring.log
logging.file.path=logs/springboot/
# 设置file appender的pattern
logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] --- %m%n

指定配置

如果想配置一些高级功能,可以需要导入具体某个日志框架的配置,SpringBoot会自动查找遵循如下命名的配置文件:

日志实现 文件命名
Logback logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j2 log4j2-spring.xml , log4j2.xml
JUL logging.properties

对于logback来说,logback-spring还可以使用profile功能:

  • logback.xml:直接就被日志框架识别了;
  • logback-spring.xml:日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的Profile功能
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <springProfile name="dev">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
        </springProfile>
        <springProfile name="test">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
        </springProfile>
    </layout>
</appender>

在springboot配置中切换profile环境:

spring.profiles.active=dev

将日志实现切换为log4j2

禁用logback、启用log4j2,然后就可以正常使用log4j2了。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- 禁用logback-->
        <exclusion>
            <artifactId>spring-boot-starter-logging</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 添加log4j2 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/springboot%e6%97%a5%e5%bf%97%e6%a1%86%e6%9e%b6%e7%9a%84%e4%bd%bf%e7%94%a8/

发表评论

电子邮件地址不会被公开。