使用@Slf4j 注释进行日志记录
Using @Slf4j annotation for logging
首先,我将对场景进行简要说明。在我的应用程序中,我使用 SLF4J 作为日志外观。对于日志记录,我使用的是 Log4j2,我也有自定义的 log4j2.xml
。
当我登录 classes 时,我创建了一个记录器,如下所述:
private static final Logger LOG = LogManager.getLogger(TestController.class);
后来,我发现有一个@Slf4j
注释,然后我可以在不手动创建记录器实例的情况下进行记录。
log.info("Info log in getHello() in TestController");
我对使用 @Slf4j
注释而不是在 class 中创建记录器实例有什么缺点的主题做了一个小研究。我没有遇到任何不应该使用 @Slf4j
注释的原因。
但是,在继续之前,我想问这个社区确认使用 @Slf4j
有什么缺点吗?
来自documentation of @Log
and friends:
...
@Slf4j
Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
...
我们看到这相当于
private static final Logger LOG = LogManager.getLogger(TestController.class);
除了字段名称。
@Sl4j
以上来自 lombork 的注释创建了一个基于 Sl4j 的记录器,但您需要一个基于 Log4j 的记录器。所以不要觉得你可以使用基于 Sl4j 的记录器。
如果您计划使用基于 Sl4j 的记录器,lombork 会在 编译 阶段修改代码并创建代码,而不是像 cglib 那样在运行时或使用反射。这意味着性能不会有任何下降。
首先,我将对场景进行简要说明。在我的应用程序中,我使用 SLF4J 作为日志外观。对于日志记录,我使用的是 Log4j2,我也有自定义的 log4j2.xml
。
当我登录 classes 时,我创建了一个记录器,如下所述:
private static final Logger LOG = LogManager.getLogger(TestController.class);
后来,我发现有一个@Slf4j
注释,然后我可以在不手动创建记录器实例的情况下进行记录。
log.info("Info log in getHello() in TestController");
我对使用 @Slf4j
注释而不是在 class 中创建记录器实例有什么缺点的主题做了一个小研究。我没有遇到任何不应该使用 @Slf4j
注释的原因。
但是,在继续之前,我想问这个社区确认使用 @Slf4j
有什么缺点吗?
来自documentation of @Log
and friends:
...
@Slf4j
Creates
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
...
我们看到这相当于
private static final Logger LOG = LogManager.getLogger(TestController.class);
除了字段名称。
@Sl4j
以上来自 lombork 的注释创建了一个基于 Sl4j 的记录器,但您需要一个基于 Log4j 的记录器。所以不要觉得你可以使用基于 Sl4j 的记录器。
如果您计划使用基于 Sl4j 的记录器,lombork 会在 编译 阶段修改代码并创建代码,而不是像 cglib 那样在运行时或使用反射。这意味着性能不会有任何下降。