lombok中的Slf4j日志记录

本文详细介绍了如何为Spring Boot项目配置不同环境下的日志,包括控制台、文件及滚动文件日志,重点展示了如何根据开发、测试和生产环境调整日志级别和输出格式。

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

话不多说,直接上代码

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

	<!--  一般写项目名 -->
    <contextName>blog</contextName>
    <!--  日志输出目录 建议写相对路径,这样可以和项目在一块 -->
    <property name="log.path" value="./log"/>

    <!--  控制台日志格式:彩色日志 -->
    <!--  magenta:洋红 -->
    <!--  boldMagenta:粗红 -->
    <!--  cyan:青色 -->
    <!--  white:白色 -->
    <!--  magenta:洋红 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/>

    <!--  文件日志格式 -->
    <property name="FILE_LOG_PATTERN"
              value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n"/>

    <!--  编码 -->
    <property name="ENCODING"
              value="UTF-8"/>

    <!--  appender 负责写日志组件 -->
    <!--  控制台日志 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${ENCODING}</charset>
        </encoder>
    </appender>

    <!--  文件日志 -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${log.path}/log.log</file>
        <append>true</append>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${ENCODING}</charset>
        </encoder>
    </appender>

    <!--  设置时间滚动策略 -->
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--  要区别他们的appender中的文件名字 -->
        <file>${log.path}/log-rolling.log</file>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${ENCODING}</charset>
        </encoder>

        <!--  设置滚动日志记录的滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--  日志归档路径以及格式 -->
            <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--  归档日志文件保留最大数量 -->
            <maxHistory>15</maxHistory>

            <!--  设置触发滚动的时机 -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--  日志文件最大内存 -->
                <maxFileSize>512000KB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!--  日志记录器 -->
    <logger name="com.lemon.blog" level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </logger>

    <!--  多环境节点 -->
    <!--  开发环境和测试环境 -->
    <springProfile name="dev,test">
    	<!-- 写项目包路径 -->
        <logger name="com.lemon.blog" level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ROLLING_FILE"/>
        </logger>
    </springProfile>

    <!--  生产环境 -->
    <springProfile name="prod">
   		 <!-- 写项目包路径 -->
        <logger name="com.lemon.blog" level="ERROR">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        </logger>
    </springProfile>
</configuration>

### 配置 LombokSLF4J 日志记录 为了在 Spring Boot 项目中利用 Lombok 的 `@Slf4j` 注解简化日志记录,需要完成几个配置步骤。 #### 安装 Lombok 插件 IDEA 开发环境中需安装 Lombok 插件以便识别并处理 `@Slf4j` 等注解。这一步骤确保编译器能够理解由 Lombok 提供的日志功能[^1]。 #### 添加依赖项 Maven 或 Gradle 构建工具中的 pom.xml 文件应包含如下依赖: 对于 Maven 用户,在项目的 `pom.xml` 中加入以下内容: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <scope>provided</scope> </dependency> <!-- slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version> </dependency> <!-- logback-classic as the binding implementation of SLF4J --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> ``` 这些依赖分别引入了 Lombok 库以及用于实现实际日志输出的 Logback 组件。 #### 使用 @Slf4j 注解 一旦上述准备工作就绪,则可以在 Java 类文件顶部简单声明 `@Slf4j` 即可获得静态 logger 实例变量。例如: ```java import lombok.extern.slf4j.Slf4j; @Slf4j public class ExampleService { public void performAction() { log.info("Executing action..."); try { // some code that might throw an exception } catch (Exception e) { log.error("An error occurred", e); } } } ``` 通过这种方式定义的服务类可以直接调用 `log.debug()`、`log.info()`、`log.warn()` 及 `log.error()` 方法来记录不同级别的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lemon20120331

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值