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

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,使用Slf4j可以方便地实现日志输出,同时支持多种日志框架的接入。下面是一个示例,演示如何在Spring Boot项目中使用Slf4j,并指定日志格式。 首先,在项目的pom.xml文件中,添加Slf4j和Logback的依赖: ```xml <dependencies> <!-- slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <!-- logback --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies> ``` 然后,在src/main/resources目录下创建logback.xml文件,指定日志格式,例如: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </configuration> ``` 这里指定了日志输出格式,包括日期、线程、日志级别、类名等信息。 最后,在Java代码中使用Slf4j进行日志输出,例如: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyService { private static final Logger logger = LoggerFactory.getLogger(MyService.class); public void doSomething() { logger.info("Doing something..."); } } ``` 这样,就可以在控制台上看到类似以下格式的日志输出: ``` 2019-04-16 21:09:47,607 [main] INFO com.example.MyService - Doing something... ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值