日常BUG01 —— @Sl4j

旧城等待, 2023-10-08 12:57 131阅读 0赞

问题描述:

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

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <version>1.16.16</version>
  5. </dependency>

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

问题解决:

引入slf4j-api依赖:

  1. <dependency>
  2. <groupId>org.slf4j</groupId>
  3. <artifactId>slf4j-api</artifactId>
  4. <version>1.7.30</version>
  5. </dependency>

原因:

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

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

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

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

  1. //
  2. // Source code recreated from a .class file by IntelliJ IDEA
  3. // (powered by Fernflower decompiler)
  4. //
  5. package org.slf4j;
  6. public interface Logger {
  7. ....
  8. void debug(String var1, Object... var2);
  9. void debug(String var1, Throwable var2);
  10. boolean isDebugEnabled(Marker var1);
  11. void debug(Marker var1, String var2);
  12. void debug(Marker var1, String var2, Object var3);
  13. void debug(Marker var1, String var2, Object var3, Object var4);
  14. void debug(Marker var1, String var2, Object... var3);
  15. void debug(Marker var1, String var2, Throwable var3);
  16. boolean isInfoEnabled();
  17. void info(String var1);
  18. void info(String var1, Object var2);
  19. void info(String var1, Object var2, Object var3);
  20. boolean isInfoEnabled(Marker var1);
  21. void info(Marker var1, String var2, Object... var3);
  22. void info(Marker var1, String var2, Throwable var3);
  23. boolean isWarnEnabled();
  24. void warn(String var1);
  25. void warn(String var1, Object var2);
  26. void warn(String var1, Object... var2);
  27. void warn(String var1, Object var2, Object var3);
  28. void warn(String var1, Throwable var2);
  29. boolean isWarnEnabled(Marker var1);
  30. void warn(Marker var1, String var2);
  31. void warn(Marker var1, String var2, Throwable var3);
  32. boolean isErrorEnabled();
  33. void error(String var1);
  34. void error(String var1, Object var2);
  35. void error(String var1, Object var2, Object var3);
  36. ....
  37. }

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

发表评论

表情:
评论列表 (有 0 条评论,131人围观)

还没有评论,来说两句吧...

相关阅读

    相关 日常BUG小记

    400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 个人认为错误原因:页面有不应该存在的属性,去掉或修改了就行了