【问题标题】:Using @Slf4j annotation for logging使用@Slf4j 注解进行日志记录
【发布时间】:2021-08-28 13:01:59
【问题描述】:

首先,我将对场景进行简要说明。在我的应用程序中,我使用 SLF4J 作为日志记录外观。对于日志记录,我使用的是 Log4j2,并且我也有自定义的 log4j2.xml。 当我登录我的课程时,我创建了一个如下所述的记录器:

private static final Logger LOG = LogManager.getLogger(TestController.class);

后来发现有@Slf4j注解,然后不用手动创建logger实例就可以登录了。

log.info("Info log in getHello() in TestController");

我对使用@Slf4j 注释而不是在类中创建记录器实例有什么缺点的主题做了一个小的研究。我没有遇到任何不应该使用@Slf4j 注释的理由。

但是,在继续之前,我想向这个社区询问一下,确认使用 @Slf4j 有什么缺点吗?

【问题讨论】:

    标签: java slf4j lombok


    【解决方案1】:

    来自documentation of @Log and friends

    ...

    @Slf4j

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

    ...

    我们看到这等价于

    private static final Logger LOG = LogManager.getLogger(TestController.class);
    

    除了字段名称。

    【讨论】:

    • 感谢@Turing85!使用 Slf4j 注释有什么缺点吗?
    • 只有您在使用 lombok 时会遇到的正常缺点:依赖未记录的编译器 API,它可能会在没有事先通知的情况下更改并破坏 lombok。
    【解决方案2】:
    @Sl4j
    

    上述来自 lombork 的注释创建了一个基于 Sl4j 的记录器,但您需要一个基于 Log4j 的记录器。所以不要觉得你可以使用基于 Sl4j 的记录器。

    如果您计划使用基于 Sl4j 的记录器,lombork 会在 编译 阶段修改代码并创建代码,而不是在运行时(如 cglib 或使用反射)。这意味着性能不会有任何下降。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      相关资源
      最近更新 更多