@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