<返回更多

别再自己用LoggerFactory生成logger实例了!试试slf4j注解

2020-08-12    
加入收藏

背景

在项目开发中,记录日志是必做的一件事情。日志的实现有很多种:Logback,Log4j2,log4j,JAVA Util Logging等等。

而slf4j是一个适配层,由适配层决定使用哪一种日志系统,而调用端只需要做的事情就是打印日志而不需要关心如何打印日志

slf4j是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:

使用slf4j的姿势是不是这样的?

public class LogExample {

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

}

每个类都要使用LoggerFactory生成一个Logger实例,复制代码时容易把**.class忘记修改,使我们对这样用法感到很无奈。幸好,lombok提供了一个注解帮我们减少了错误和减少代码量,提升了工作效率。

Slf4j注解使用示例

添加依赖

别再自己用LoggerFactory生成logger实例了!试试slf4j注解

 

使用注解

别再自己用LoggerFactory生成logger实例了!试试slf4j注解

 

验证

Slf4j定义

别再自己用LoggerFactory生成logger实例了!试试slf4j注解

 

可以看到slf4j注解主要是产生一个log实例,可以作用于类和枚举。

使用反编译工具打开FreeMarkerController编译后的class文件:

别再自己用LoggerFactory生成logger实例了!试试slf4j注解

 

可以发现,slf4j注解注解在编译时主动将注解转换成

private static final Logger log = LoggerFactory.getLogger(FreeMarkerController.class);

总结及拓展

Lombok不是通过字节码改写来实现的。它主要是用编译器内支持的annotation processing,直接操纵抽象语法树(AST),根据需要添加新节点。

lombok提供了很多好用的注解,大家可以试用一下:

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>