SpringBoot项目集成slf4j日志(自用留档)

本文详细介绍了如何在SpringBoot2.7.6项目中集成slf4j并配置logback.xml,包括添加依赖、修改配置文件、创建日志输出模板,以及运行示例并查看不同级别的日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot集成slf4j日志和logback.xml配置

一、SpringBoot版本

SpringBoot使用2.7.6

<spring-boot.version>2.7.6</spring-boot.version>

二、依赖jar包

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        <!--使用注解配置-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

三、配置文件更改

application.yml 中新增日志配置

logging:
  #日志配置路径
  config: classpath:log.xml
  #日志级别 指定目录级别
  level:
    root: INFO

四、新增log.xml配置文件

在resources目录下新增 log.xml 配置文件
在这里插入图片描述
内容为:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 应用名称 -->
    <property name="APP_NAME" value="demo-test"/>
    <!--定义日志文件的存储地址-->
    <property name="LOG_HOME" value="/logs/${APP_NAME}"/>
<!--    %d	表示日期(也可以使用"%date")-->
<!--    %-5level	表示级别从左显示5个字符宽度-->
<!--    %thread	表示线程名称-->
<!--    %-30.30logger{30}	表示如果logger的名称小于30,就“-”指定左对齐;如果其名称长于30字符,就从左边较远输出的字符截掉,保持logger的名字长度最终限制为30个字符-->
<!--    %msg	表示日志消息-->
<!--    %n	表示换行符-->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
    <!-- 定义日志存储的路径,不要配置相对路径 -->
    <!-- 开发环境
    <property name="FILE_PATH" value="C:/Users/Demo/Desktop/demo/logs/demo.%d{yyyy-MM-dd}.%i.log" />    -->
    <!-- 服务器环境  -->
    <property name="FILE_PATH" value="/usr/local/demo-project/logs/demo.%d{yyyy-MM-dd}.%i.log" />

    <!-- 控制台输出日志 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--文件输出的格式设置 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false -->
        <prudent>false</prudent>
        <!-- 日志日常打印日志文件,生成日志示例:/logs/demo-test/info.log -->
        <file>${LOG_HOME}/info.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 压缩日志的路径和日志格式,示例:info-2023-05-26_21.log.zip,%d{yyyy-MM-dd}:表示文件名称包含日期,%i:表示当前是第几个压缩文件 -->
            <fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}_%i.log.zip</fileNamePattern>
            <!-- 如果按天来回滚,则最大保存时间为7天,7天之前的都将被清理掉 -->
            <maxHistory>7</maxHistory>
            <!-- 日志总保存量为100MB,超过该日志总量的日志压缩包会被清除 -->
            <totalSizeCap>100MB</totalSizeCap>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大10MB时会被压缩和切割 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <!-- 文件输出的日志 的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- project default level -->
    <logger name="com.demo.demos.web.*" level="INFO" />

    <!-- 日志输出级别 常用的日志级别按照从高到低依次为:ERROR、WARN、INFO、DEBUG。 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

五、运行demo

1、在启动类上加注解@Slf4j;
2、在main方法中打印一行日志

@Slf4j
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        log.info("info === spring 启动 ===");
    }
    
}

3、运行demo打印日志
打印日志正常

2024-02-25 15:43:36.446 [INFO ] [main] [o.s.b.w.e.t.TomcatWebServer   ] Tomcat started on port(s): 8080 (http) with context path ''
2024-02-25 15:43:36.453 [INFO ] [main] [com.demo.DemoApplication      ] Started DemoApplication in 1.211 seconds (JVM running for 2.064)
2024-02-25 15:43:36.455 [INFO ] [main] [com.demo.DemoApplication      ] info === spring 启动 ===

日志文件保存正常
在这里插入图片描述
在这里插入图片描述

六、新增Demo并运行

1、新增日志测试类

@Slf4j
public class Slf4jTest {

    // private static  final Logger logger = LoggerFactory.getLogger(Slf4jTest.class);

    public static void main(String[] args) {
        log.debug("@@@@@@@@@@@----------debug");
        log.info("@@@@@@@@@@@----------info");
        log.error("@@@@@@@@@@@----------error");
    }

}

2、运行打印日志
打印日志正常

15:53:30.480 [main] DEBUG com.demo.demos.web.Slf4jTest - @@@@@@@@@@@----------debug
15:53:30.482 [main] INFO com.demo.demos.web.Slf4jTest - @@@@@@@@@@@----------info
15:53:30.482 [main] ERROR com.demo.demos.web.Slf4jTest - @@@@@@@@@@@----------error

七、参考资料:

感谢大佬指点!

SpringBoot集成slf4j日志和logback.xml配置详解
https://blog.csdn.net/qq_29864051/article/details/130881230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值