问题描述:
需要打印日志,使用的是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来自lombok的extern包下,
extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。
我们可以得出结论Sl4j是lombok的一个扩展功能,但是如果想要使用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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复