lombok之@Log

@Log的使用

  在我们开发项目时,通常会在项目中添加日志记录的功能,而无论什么日志记录,其添加的时候都要先初始化,然后才开始使用,比如说如下的log4j2的初始化为:

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

  虽然说每个项目的初始化操作都比较简单,但是也架不住数量众多,所以说为了简化起见,lombok推出了@Log注解,该注解就是帮助我们在日志中进行初始化操作的。其具体的使用方式为在所需要添加@Log的类名上添加如下注解:

@Slf4j

  然后我们就可以像普通的已经初始化的日志程序一样,通过log.的方式进行调用了,比如说如果要是想要打印出info信息,那么我们的调用方法为:

log.info("");

@Log注解API

@CommonsLog
Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@JBossLog
Creates private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
Creates private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
Creates private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
Creates private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

@Log的使用用例

  由于我想在log4j2中也采用这种调用方式,但是实际上我在百度搜索中,发现居然找不到,而在不断频繁的查找中,我最终在Spring Boot中查找到了其官方的调用方式,所以说就果断下定决心,将log4j2以及logback的@Log注解调用程序源码写出来,这样就省得以后再到处去查找了。

lombok-log-parent父模块

lombok-log-parent父模块pom.xml依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lyc</groupId>
  <artifactId>lombok-log-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
    <modules>
      <module>lombok-log4j2</module>
      <module>lombok-logback</module>
    </modules>
    <packaging>pom</packaging>

  <name>lombok-log-parent</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.20</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>

log4j2

引入的pom.xml依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>lombok-log-parent</artifactId>
        <groupId>com.lyc</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>lombok-log4j2</artifactId>
    <packaging>jar</packaging>

    <name>lombok-log4j2</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.10.0</version>
        </dependency>
        <!--log4j2-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.10.0</version>
        </dependency>
    </dependencies>
</project>

log4j2.xml源码

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %t %-5l - %m%n"/>
        </Console>
        <!--
            fileName:指定日志的所在位置以及日志名称
            filePattern:指定备份的日志所在位置以及名称
        -->
        <RollingFile name="RollingFile" fileName="F:/logs/log4j2-xml.log" filePattern="F:/logs/log4j2-xml-$${date:yyyy-MM}/log4j2-xml-%d{yyyy-MM-dd}-%i.log.gz">
            <!--输出的日志数据格式-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %t %-5l - %m%n"/>
            <!--设置日志文件大小,当超过5M时,触发日志备份操作-->
            <SizeBasedTriggeringPolicy size="5 MB" />
        </RollingFile>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFile"/>
        </root>
    </loggers>
</configuration>

Log4j2Test测试

package com.lyc.log4j2;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class Log4j2Test {

    @Test
    public void test(){
        log.info("test()->{}","这里是log4j2");
    }

}

logback

pom.xml依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>lombok-log-parent</artifactId>
        <groupId>com.lyc</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>lombok-logback</artifactId>
    <packaging>jar</packaging>

    <name>lombok-logback</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!--logback-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.3.0-alpha2</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.3.0-alpha2</version>
        </dependency>
    </dependencies>
</project>

logback.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- TRACE < DEBUG < INFO < WARN < ERROR -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

LogbackTest测试

package com.lyc.logback;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class LogbackTest {

    @Test
    public void test(){
        log.info("test()->,{}","这里是logback");
    }

}

项目源码:lombok-log-parent
参考文档:lombok-log


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值