第 2 章 为应用程序启用 JBoss Logging


当您要使用 JBoss Logging 来收集应用程序日志时,您必须向要生成日志的每个类添加一个日志记录器。以下流程演示了如何以编程方式使用 API 方法向应用程序添加日志记录,或使用注解以声明性方式向应用程序添加日志。

流程

  1. 根据您的应用程序代码,使用以下方法之一:

    1. 创建 org.jboss.logging.Logger 实例,并通过为每个类调用 Logger.getLogger (Class) 来初始化它:

      src/main/java/org/acme/ExampleResource.java

      import org.jboss.logging.Logger; 
      1
      
      
      import javax.ws.rs.GET;
      import javax.ws.rs.Path;
      import javax.ws.rs.Produces;
      import javax.ws.rs.core.MediaType;
      
      @Path("/hello")
      public class ExampleResource {
      
          private static final Logger LOG = Logger.getLogger(ExampleResource.class); 
      2
      
      
          @GET
          @Produces(MediaType.TEXT_PLAIN)
          public String hello() {
              LOG.info("Hello"); 
      3
      
              return "hello";
          }
      }
      Copy to Clipboard Toggle word wrap

      1
      为您要使用的每个类命名空间添加 org.jboss.logging.Logger import 语句。
      2
      为每个类添加对日志记录器单例的引用。
      3
      为日志消息设置日志级别。
    2. 在 Bean 和资源类中注入配置的 org.jboss.logging.Logger 实例:

      src/main/java/org/acme/ExampleResource.java

      import javax.inject.Inject;
      import javax.ws.rs.GET;
      import javax.ws.rs.Path;
      import javax.ws.rs.Produces;
      import javax.ws.rs.core.MediaType;
      
      import org.jboss.logging.Logger; 
      1
      
      
      import io.quarkus.arc.log.LoggerName;
      
      @Path("/hello")
      public class ExampleResource {
      
          @Inject
          Logger log; 
      2
      
      
          @LoggerName("foo")
          Logger fooLog; 
      3
      
      
          @GET
          @Produces(MediaType.TEXT_PLAIN)
          public String hello() {
              log.info("Simple!");
              fooLog.info("Goes to foo logger!");
              return "hello";
          }
      }
      Copy to Clipboard Toggle word wrap

      1
      为您要使用的每个类命名空间添加 org.jboss.logging.Logger import 语句。
      2
      声明类的完全限定类名称用作日志记录器名称,等同于 initialization 语句 org.jboss.logging.Logger.getLogger (ExampleResource.class)
      3
      为日志记录器设置名称。在本例中,日志记录器名称为 foo,相当于 initialization 语句 org.jboss.logging.Logger.getLogger ("foo")。
      注意

      日志记录器实例在内部缓存。您注入 bean 的日志记录器对所有 bean 实例共享,以避免与日志记录器实例化相关的性能损失。

  2. (可选)在 application.properties 文件中配置日志输出:

    src/main/resources/application.properties

    <configuration_key>=<value>
    Copy to Clipboard Toggle word wrap

    例如,您可以创建一个日志文件并将输出输出到控制台和文件中:

    src/main/resources/application.properties

    quarkus.log.file.enable=true
    quarkus.log.file.path=/tmp/trace.log
    Copy to Clipboard Toggle word wrap

  3. 以开发模式运行应用程序:

    ./mvnw quarkus:dev
    Copy to Clipboard Toggle word wrap
  4. 进入 http://localhost:8080/hello
  5. 根据您的配置,查看终端或日志文件中的日志消息。

    日志级别设置为 INFOExampleResource.class 的输出示例:

    2021-05-21 15:38:39,751 INFO  [io.quarkus] (Quarkus Main Thread) my-project my-version on JVM (powered by Quarkus 1.13.3.Final) started in 1.189s. Listening on: http://localhost:8080
    2021-05-21 15:38:39,765 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
    2021-05-21 15:38:39,766 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy]
    2021-05-21 15:38:58,790 INFO  [ExampleResource] (executor-thread-1) Hello
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat