我是靠谱客的博主 无辜曲奇,这篇文章主要介绍日常BUG01 —— @Sl4j问题描述:问题解决:原因:,现在分享给大家,希望可以做个参考。

问题描述:

需要打印日志,使用的是lombok包中的sl4j,lombok依赖如下:

复制代码
1
2
3
4
5
6
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version> </dependency>

但是无法使用log.info()log.error() 等…
在这里插入图片描述

问题解决:

引入slf4j-api依赖:

复制代码
1
2
3
4
5
6
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version> </dependency>

原因:

我们可以看到注解@Sl4j来自lombokextern包下,

extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。

我们可以得出结论Sl4jlombok的一个扩展功能,但是如果想要使用Sl4j中的方法,还需要其他模块,这个模块就是slf4j-api依赖。

引入slf4j-api依赖后,可以找到log.error() 按住 Ctrl + 鼠标左键我们可以看到这是个接口:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.slf4j; public interface Logger { .... void debug(String var1, Object... var2); void debug(String var1, Throwable var2); boolean isDebugEnabled(Marker var1); void debug(Marker var1, String var2); void debug(Marker var1, String var2, Object var3); void debug(Marker var1, String var2, Object var3, Object var4); void debug(Marker var1, String var2, Object... var3); void debug(Marker var1, String var2, Throwable var3); boolean isInfoEnabled(); void info(String var1); void info(String var1, Object var2); void info(String var1, Object var2, Object var3); boolean isInfoEnabled(Marker var1); void info(Marker var1, String var2, Object... var3); void info(Marker var1, String var2, Throwable var3); boolean isWarnEnabled(); void warn(String var1); void warn(String var1, Object var2); void warn(String var1, Object... var2); void warn(String var1, Object var2, Object var3); void warn(String var1, Throwable var2); boolean isWarnEnabled(Marker var1); void warn(Marker var1, String var2); void warn(Marker var1, String var2, Throwable var3); boolean isErrorEnabled(); void error(String var1); void error(String var1, Object var2); void error(String var1, Object var2, Object var3); .... }

而我们引入的slf4j-api就是对这些接口的实现。
在这里插入图片描述
所以我们可以使用 log.info()log.error()

最后

以上就是无辜曲奇最近收集整理的关于日常BUG01 —— @Sl4j问题描述:问题解决:原因:的全部内容,更多相关日常BUG01内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部