SpringBoot项目中使用Lombok插件中Slf4j日志框架

前言:idea需要安装lombok插件,因为该插件中添加了@Slf4j注解,可以将@Slf4j翻译成

 private static final org.slf4j.Logger logger = LoggerFactory.getLogger(this.XXX.class);

springboot本身就内置了slf4j日志框架,所以不需要单独引用slf4j的依赖。

一、入门

1、添加lombok依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

2、添加配置

#日志配置
logging:
  config: classpath:logback-spring.xml  #指定项目启动的时,读取logback-spring.xml日志配置文件,文件名最好不要使用logback.xml
  level: #配置指定包的路径下应用程序的日志记录和日志级别。
    root: info
    springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator: error
    org.springframework: warn
  file:
    path: D:\sinux_2023\project\phm\724_3\exe\logs #设置日志输出路径
    name: phm.log #设置日志文件的名称

3、配置日志样式

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <!-- 获取yml中的log地址 -->
    <springProperty scope="context" name="logPath" source="logging.file.path"/>
    <springProperty scope="context" name="logName" source="logging.file.name"/>
    <!-- 应用名称 -->
    <property name="APP_NAME" value="PHMServer"/>
    <!--定义日志文件的存储地址-->
    <property name="LOG_HOME" value="${logPath}"/>
<!--    <property name="LOG_HOME" value="/logs/${APP_NAME}"/>-->

    <!-- 定义日志格式  -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
    <!-- 高亮日志格式  -->
    <property name="HIGHLIGHT_PATTERN" value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %green(%logger{50}) - %highlight(%msg) %n"/>

    <!-- 控制台输出-高亮 -->
    <appender name="CONSOLE-WITH-HIGHLIGHT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${HIGHLIGHT_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--文件输出的格式设置 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!-- 如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false -->
        <prudent>false</prudent>

        <!-- 日志日常打印日志文件,生成日志示例:/logs/log-test/info.log -->
        <file>${LOG_HOME}/${logName}</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>

            <!-- 如果按天来回滚,则最大保存时间为180天,180天之前的都将被清理掉 -->
            <maxHistory>180</maxHistory>

            <!-- 日志总保存量为10GB,超过该日志总量的最早的日志压缩包会被清除 -->
            <totalSizeCap>10GB</totalSizeCap>

            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大100MB时会被压缩和切割 -->
                <maxFileSize>100MB</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>

    <!-- 日志输出级别 -->
    <!--
       logger 有两种级别,一种是 root,一种是普通的 logger,logger 是用来设置某一个包或者具体的某一个类的日志打印机级别,以及制定的 appender。
       logger 有三个属性
       - name:用来指定此 logger 约束的某一个包或者具体的某一个类
       - level:用来设置打印级别,
       - addtivity:是否向上级 logger 传递打印信息。默认是 true
       每个 logger 都有对应的父级关系,它通过包名来决定父级关系,root 是最高级的父元素。
       -->
    <logger name="org.springframework" level="INFO"/>
    <logger name="com.sinux.*" level="INFO"/>
    <root level="INFO">
        <appender-ref ref="CONSOLE-WITH-HIGHLIGHT"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>

4、使用

@SpringBootApplication
@Slf4j//日志注解
@EnableWebMvc //SpringBoot 整合Swagger报错,Failed to start bean ‘documentationPluginsBootstrapper‘;nested exception ,在启动类添加注解@EnableWebMvc。
public class SystemApplication {

    public static void main(String[] args) {
        SpringApplication.run(SystemApplication.class, args);
        log.info("|Spring容器启动|XX系统启动成功!");
    }

}

二、注意事项

1、使用logback-spring.xml的原因

如果日志配置文件的名称是logback.xml,logback配置会先于Spring之前加载,导致无法使用扩展功能。

如果日志配置文件的名称是logback-spring.xml,该配置文件晚于application.yml加载;

在文件中,我们需要使用application.yml中的日志配置路径,所以需要logback-spring.xml。

获取yml中日志路径的语法:

<!-- 获取yml中的log地址 -->
<springProperty scope="context" name="logPath" source="logging.file.path"/>
<springProperty scope="context" name="logName" source="logging.file.name"/>

<!--定义日志文件的存储地址-->
<property name="LOG_HOME" value="${logPath}"/>

三、效果图

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
集成Spring Boot、LombokSLF4J和Logback有以下几个步骤: 1. 引入依赖:在`pom.xml`文件引入以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Lombok依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- 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> ``` 2. 创建日志配置文件:在`src/main/resources`目录下创建`logback.xml`文件,并在其配置日志输出格式、日志级别等信息。示例配置文件如下: ``` <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 定义日志输出格式 --> <property name="LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/> <!-- 控制台输出 --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- 文件输出 --> <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/spring-boot-demo.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/spring-boot-demo-%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- 定义日志级别 --> <root level="INFO"> <appender-ref ref="consoleAppender"/> <appender-ref ref="fileAppender"/> </root> </configuration> ``` 3. 在代码使用SLF4J使用SLF4J的API进行日志输出,示例代码如下: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { private static final Logger LOGGER = LoggerFactory.getLogger(HelloController.class); @GetMapping("/hello") public String hello() { LOGGER.debug("debug message"); LOGGER.info("info message"); LOGGER.warn("warn message"); LOGGER.error("error message"); return "Hello, world!"; } } ``` 4. 使用Lombok简化代码:使用Lombok注解简化代码,示例代码如下: ``` import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class HelloController { @GetMapping("/hello") public String hello() { log.debug("debug message"); log.info("info message"); log.warn("warn message"); log.error("error message"); return "Hello, world!"; } } ``` 以上就是集成Spring Boot、LombokSLF4J和Logback的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值