第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";
          }
      }

      1
      使用するクラスの namespace ごとに org.jboss.logging.Logger import ステートメントを追加します。
      2
      各クラスのロガー singleton への参照を追加します。
      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";
          }
      }

      1
      使用するクラスの namespace ごとに org.jboss.logging.Logger import ステートメントを追加します。
      2
      宣言するクラスの完全修飾クラス名は、初期化ステートメント org.jboss.logging.Logger.getLogger(ExampleResource.class) と同等のロガー名として使用されます。
      3
      ロガーの名前を設定します。この例では、ロガー名は foo で、初期化ステートメント org.jboss.logging.Logger.getLogger("foo") に相当します。
      注記

      ロガーインスタンスは内部的にキャッシュされます。Bean に注入するロガーは、すべての Bean インスタンスで共有され、ロガーのインスタンス化に関連するパフォーマンスの低下を回避します。

  2. (オプション) application.properties ファイルでロギング出力を設定します。

    src/main/resources/application.properties

    <configuration_key>=<value>

    たとえば、ログファイルを作成し、出力結果をコンソールとファイルに出力できます。

    src/main/resources/application.properties

    quarkus.log.file.enable=true
    quarkus.log.file.path=/tmp/trace.log

  3. アプリケーションを開発モードで実行します。

    ./mvnw quarkus:dev
  4. http://localhost:8080/hello を参照します。
  5. 設定に応じて、端末またはログファイルでログメッセージを確認します。

    ロギングレベルが INFO に 設定された ExampleResource.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