【lombok】Lombok详解(日志记录和简化代码)

本文介绍了如何在SpringBoot项目中使用Lombok简化代码,包括@Slf4j进行日志记录和配置日志文件。此外,详细讲述了logback-spring.xml配置文件的设置,以及如何通过调整日志级别来打印SQL执行记录。还提到了@Data、@Setter和@Getter等注解的使用。
摘要由CSDN通过智能技术生成

前言

(1) 先说说什么时候会用到记录日志吧,咱们平常开发是用不到的,因为咱们可以直接看到控制台,但是当咱们部署到了服务器上,然后项目出现了问题,咱们怎么排查问题呢,不能直接去服务器里面看吧。所以这时咱们就需要了日志文件,咱们把生成的日志文件放到服务器固定路径,然后拿到文件看到异常就可以解决问题了。
(2) 咱们经常要用实体类,需要进行封装,然后需要get、set方法,那么使用lombok就可以让你减少代码的编写。

下面我是基于 springboot项目进行配置的

一.下载 lombok 插件

注意: 有的版本的idea搜不到,因为他已经内置了 Lombok,那你就忽略这步。

idea左上角 File -> Settings -> Plugins

在这里插入图片描述

二.pom文件导入依赖

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

三.简单记录日志

1.配置yml文件

# path 和 name 不会同时生效,区别在于 name可以自定义日志名字:一般工作中定义为${spring.application.name}.log,当然你也可以定义成别的。
logging:
  file:
    name: C:\LogFile\test.log # 会在LogFile目录下生成 test.log 日志文件,并且如果 LogFile目录不存在,会自动给你创建。
#    path: C:\LogFile  # 会在LogFile目录下生成默认 spring.txt 日志文件,并且如果 LogFile目录不存在,会自动给你创建。

2.实际使用(加@Slf4j)

@Slf4j注解加上就ok了,当然他也会记录你控制台打印的信息。

@Component
@Slf4j //日志注解
//继承CommandLineRunner,可以使项目启动之后就执行
public class TestLog implements CommandLineRunner { 

    @Override
    public void run(String... args) throws Exception {
		//记录日志内容
        log.info("++++++++ 记录日志 ++++++++");
    }
}

四.日志记录更多配置(logback-spring.xml配置文件)

1.配置yml文件

logging:
  config: classpath:logback-spring.xml  #日志配置文件,会在当前项目下去找日志配置文件

2.logback-spring.xml配置文件位置

在这里插入图片描述

3.logback-spring.xml配置文件内容

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 -->

<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="2.5 seconds" debug="false">

	<!--日志格式 -->
    <property name="logPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n"/>
    <!-- 日志文件路径 -->
    <property name="logPath" value="/kunkun/log/"></property>
    <!-- 日志文件名称 -->
    <property name="logName" value="springboot_log"></property>


	<!--日志记录控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
        	<!--日志格式 -->
            <pattern>${logPattern}</pattern>
            <!--日志编码 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 日志文件配置 对应级别记录到对应文件中-->
    <appender name="LEVEL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<!--让对应日志级别,记录到对应得文件中 -->
    	<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>trace或debug或info或warn或error或fatal</level>
        </filter>
        <!-- 日志文件的路径和名称 -->
        <file>${logPath}${logName}.log</file>
        <encoder>
        	 <!--日志格式 -->
            <pattern>${logPattern}</pattern>
             <!--日志编码 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 每天的日志都是一个文件-->
            <!-- 归档日志的格式 -->
            <fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            	<!--单个日志最大大小 -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
    </appender>
    
	<!-- 日志文件配置 所有级别日志都记录到一个文件里面-->
    <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件的路径和名称 -->
        <file>${logPath}${logName}.log</file>
        <encoder>
        	 <!--日志格式 -->
            <pattern>${logPattern}</pattern>
             <!--日志编码 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 每天的日志都是一个文件-->
            <!-- 归档日志的格式 -->
            <fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            	<!--单个日志最大大小 -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
    </appender>

    <!-- 开发、测试环境,额外指定不同包下不同的日志等级 -->
    <springProfile name="dev,test">
    	<!--日志是info的级别的 -->
     	<root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="LEVEL_FILE" />
            <appender-ref ref="ALL_FILE" />
        </root>
    	<!--指定org.springframework.web日志级别是ERROR -->
        <logger name="org.springframework.web" level="ERROR"></logger>
        <!--指定org.springboot.sample日志级别是ERROR -->
        <logger name="org.springboot.sample" level="ERROR"></logger>
        <!--指定com.ipage.work日志级别是INFO-->
        <logger name="com.ipage.work" level="INFO"></logger>
    </springProfile>

    <!-- 生产环境 -->
    <springProfile name="prod">
    	<!--日志是info的级别的,生成环境尽量不要控制台日志 -->
     	<root level="info">
            <appender-ref ref="LEVEL_FILE" />
            <appender-ref ref="ALL_FILE" />
        </root>
        <!--优先级大于 <root/>标签 -->
        <logger name="org.springframework.web" level="ERROR"> </logger>
        <logger name="org.springboot.sample" level="ERROR"></logger>
        <logger name="com.ipage.work" level="INFO"> </logger>
    </springProfile>
</configuration>

4.使用

配置好之后,加上@Slf4j注解,然后直接使用就行了。

5.拓展:如果你想把sql的执行记录打印在控制台上怎么办?

①记录sql需要debug级别的,所以把 <root level="info"> 改成 <root level="debug">
②在yml文件中配置

logging:
  level:
    XXX.XXX.dao: debug #你执行dao包的位置

五.使用注解减少代码开发

1.@Data

通常我们要在实体类里面,定义属性,然后手动去生成get、set、toString方法,我们直接去使用@Data注解就会自动生成get、set、toString方法。

@Data
public class Kunkun {
    private int id;
    private String chang;
    private String tiao;
}

2.@Setter和@Getter

@Data注解作用一样

public class Kunkun {

	@Getter@Setter
    private int id;
    
    private String chang;
    private String tiao;
}

3.更多注解作用

(1) @Synchronized : 同步方法安全的转化。
(2) @ToString: 自动生成toString方法。
属性1:callSuper 是否输出父类的toString方法,默认为false。
属性2:includeFieldNames 是否包含字段名称,默认为true。
属性3:exclude 排除生成tostring的字段。
(3) @Cleanup: 用于确保已分配的资源被释放,如IO的连接关闭。
(4) @NonNull: 用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常。
(5)@Value: 从配置文件读取值。

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱穿背带裤的馫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值