SpringBoot项目引入@Slf4j

本文详细介绍在SpringBoot环境下如何配置log4j并结合Lombok进行日志记录,包括pom文件中引入log4j和Lombok依赖、创建log4j.properties配置文件及使用@Slf4j注解简化日志输出。

在SpringBoot的开发环境下

一、pom文件引入依赖

        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- Lombok依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

二、创建配置文件log4j.properties

log4j.rootLogger=DEBUG,stdout

log4j.logger.com.mchange.v2 = INFO

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

三、使用@Slf4j

@Slf4j
public class TestDemo{

    public void test() {
        //logger提供了使用{}作为占位符,这样避免我们字符串的拼接
        //除了info还可以选择debug, error, trace, warn等类型
        log.info("这是一个测试的输出,{},{}", "第一个占位符", "第二个占位符");
    }

}

 

 

在 Spring Boot 中,使用 `@Slf4j` 注解和直接通过 `org.slf4j.Logger` 实例记录日志是两种常见的日志记录方式。它们的核心区别在于代码的简洁性、可维护性以及底层实现机制。 ### 代码简洁性与可读性 使用 `@Slf4j` 注解可以显著减少样板代码。开发者只需在类上添加该注解,即可直接使用名为 `log` 的日志对象进行日志输出。例如: ```java import lombok.extern.slf4j.Slf4j; @Slf4j public class MyService { public void doSomething() { log.info("Doing something..."); } } ``` 相比之下,直接使用 `org.slf4j.Logger` 需要手动声明并初始化一个 `Logger` 实例,通常通过 `LoggerFactory` 获取: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyService { private static final Logger log = LoggerFactory.getLogger(MyService.class); public void doSomething() { log.info("Doing something..."); } } ``` 因此,`@Slf4j` 在代码简洁性和可读性方面具有明显优势[^1]。 ### 性能差异 从性能角度来看,两者几乎没有实质性的差别。`@Slf4j` 是 Lombok 提供的一个编译时注解,它会在编译阶段自动生成 `Logger` 实例的声明和初始化代码,等效于手动编写的方式。这意味着运行时的日志记录行为完全一致,性能表现也是一致的[^2]。 ### 可维护性与调试便利性 使用 `@Slf4j` 有助于提高代码的可维护性,尤其是在大型项目中。由于省去了重复的 `Logger` 声明,减少了出错的可能性,同时也使得类结构更加清晰。然而,在某些情况下,如果需要对日志记录器进行更精细的控制(如动态更改日志级别或绑定不同的日志实现),直接使用 `Logger` 实例可能更具灵活性。 ### 依赖管理与构建工具支持 使用 `@Slf4j` 需要引入 Lombok 依赖,并确保 IDE 和构建工具(如 Maven 或 Gradle)支持 Lombok 注解处理器。对于不熟悉 Lombok 的团队来说,这可能会带来一定的学习成本。而直接使用 `org.slf4j.Logger` 则不需要额外的依赖,仅需 SLF4J API 和底层日志实现(如 Logback)即可正常工作[^3]。 ### 总结 | 特性 | `@Slf4j` 注解 | `org.slf4j.Logger` | |------|----------------|---------------------| | 代码简洁性 | 高 | 低 | | 可读性 | 高 | 中 | | 性能 | 相同 | 相同 | | 可维护性 | 高 | 中 | | 灵活性 | 中 | 高 | | 依赖要求 | 需 Lombok | 不需要 | 综上所述,`@Slf4j` 更适合追求开发效率和代码整洁性的场景,而直接使用 `org.slf4j.Logger` 则适用于需要更高灵活性或已有项目未使用 Lombok 的情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值