1.2. 获取应用日志记录器
在 Quarkus 中,获取应用程序日志记录器的最常见方法是:
1.2.1. 声明日志记录器字段
借助此类方法,您可以使用特定的 API 获取日志记录器实例,将其存储在类的静态字段中,并在此实例上调用日志记录操作。
同一流可以使用 任何受支持的日志记录 API 应用。
使用 JBoss Logging API 将日志记录器实例存储在静态字段中的示例:
package com.example; import org.jboss.logging.Logger; public class MyService { private static final Logger log = Logger.getLogger(MyService.class); 1 public void doSomething() { log.info("It works!"); 2 } }
1.2.2. 简化的日志记录
Quarkus 通过自动将日志记录器字段添加到使用 io.quarkus.logging.Log
的类来简化日志记录。这消除了重复板代码的需求,并增强了日志记录设置便利。
使用静态方法调用的简化日志示例:
package com.example; import io.quarkus.logging.Log; 1 class MyService { 2 public void doSomething() { Log.info("Simple!"); 3 } }
仅在应用程序类中使用 Log
API,而不是在外部依赖项中使用。构建时没有由 Quarkus 处理的日志方法调用将抛出异常。
1.2.3. 注入配置的日志记录器
使用 @Inject
注解配置的 org.jboss.logging.Logger
日志记录器实例的注入是添加应用程序日志记录器的另一个替代方法,但仅适用于 CDI Bean。
您可以使用 @Inject Logger 日志
,其中日志记录器以您注入的类命名,或 @Inject @LoggerName ("…") Logger log
,其中日志记录器将接收指定名称。注入后,您可以使用 log
对象来调用日志记录方法。
两种不同类型的日志记录器注入示例:
import org.jboss.logging.Logger; @ApplicationScoped class SimpleBean { @Inject Logger log; 1 @LoggerName("foo") Logger fooLog; 2 public void ping() { log.info("Simple!"); fooLog.info("Goes to _foo_ logger!"); } }
日志记录器实例在内部缓存。因此,当注入日志记录器(例如,在 @RequestScoped
bean 中)时,它会共享所有 bean 实例,以避免可能与日志记录器实例化相关的性能。