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

目录

  • 前言
  • 一.下载 lombok 插件
  • 二.pom文件导入依赖
  • 三.简单记录日志
    • 1.配置yml文件
    • 2.实际使用(加@Slf4j)
  • 四.日志记录更多配置(logback-spring.xml配置文件)
    • 1.配置yml文件
    • 2.logback-spring.xml配置文件位置
    • 3.logback-spring.xml配置文件内容
    • 4.使用
    • 5.拓展:如果你想把sql的执行记录打印在控制台上怎么办?
  • 五.使用注解减少代码开发
    • 1.@Data
    • 2.@Setter和@Getter
    • 3.更多注解作用

前言

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

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

一.下载 lombok 插件

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

idea左上角 File -> Settings -> Plugins

【lombok】Lombok详解(日志记录和简化代码)_第1张图片

二.pom文件导入依赖

	
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
    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配置文件位置

【lombok】Lombok详解(日志记录和简化代码)_第2张图片

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







<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-8charset>
        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或fatallevel>
        filter>
        
        <file>${logPath}${logName}.logfile>
        <encoder>
        	 
            <pattern>${logPattern}pattern>
             
            <charset>UTF-8charset>
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            
            <fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            	
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>15maxHistory>
        rollingPolicy>
    appender>
    
	
    <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${logPath}${logName}.logfile>
        <encoder>
        	 
            <pattern>${logPattern}pattern>
             
            <charset>UTF-8charset>
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            
            <fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            	
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>15maxHistory>
        rollingPolicy>
    appender>

    
    <springProfile name="dev,test">
    	
     	<root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="LEVEL_FILE" />
            <appender-ref ref="ALL_FILE" />
        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>

    
    <springProfile name="prod">
    	
     	<root level="info">
            <appender-ref ref="LEVEL_FILE" />
            <appender-ref ref="ALL_FILE" />
        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级别的,所以把 改成
②在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: 从配置文件读取值。

你可能感兴趣的:(java,日志,Lombok,配置文件,简化开发)