検索

1.2. アプリケーションロガーの取得

download PDF

以下は、最も一般的な 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
log オブジェクト上で目的のロギングメソッドを呼び出します。

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
    }
}

1
io.quarkus.logging.Log クラスには、JBoss Logging と同じメソッドが含まれます。ただし、それが static である点は異なります。
2
クラスはロガーフィールドを宣言しないことに注意してください。これは、アプリケーションのビルド中に、Log API を使用する各クラスに private static final org.jboss.logging.Logger フィールドが自動的に作成されるためです。Log メソッドを呼び出すクラスの完全修飾名は、ロガー名として使用されます。この例のロガー名は com.example.MyService です。
3
最後に、Log メソッドへの呼び出しはすべて、アプリケーションのビルド中にロガーフィールドに対する通常の JBoss Logging 呼び出しに書き換えられます。
警告

Log API は、外部の依存関係ではなく、アプリケーションクラスでのみ使用してください。ビルド時に Quarkus が処理しない Log メソッド呼び出しは、例外を出力します。

1.2.3. 設定されたロガーを注入する

@Inject アノテーションを使用して、設定済みの org.jboss.logging.Logger ロガーインスタンスを注入する方法は、アプリケーションアプリケーションロガーを追加する場合の代替手段ですが、これを適用できるのは CDI Bean のみです。

ロガーの名前は、@Inject Logger log を使用すると注入するクラスにちなんだ名前、@Inject @LoggerName("…​") Logger log を使用すると特定の名前になります。注入が完了すると、log オブジェクトを使用してロギングメソッドを呼び出せます。

2 種類のロガーインジェクションの例:

package com.example;

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!");
   }
}

1
宣言するクラスの FQCN は、ロガー名として使用されます。たとえば、org.jboss.logging.Logger.getLogger(SimpleBean.class) が使用されます。
2
この場合、ロガー名として foo という名前が使用されます。たとえば、org.jboss.logging.Logger.getLogger("foo") が使用されます。
注記

ロガーインスタンスは内部的にキャッシュされます。したがって、たとえば @RequestScoped Bean にロガーが注入されると、挿入されると、ロガーのインスタンス化に関連してパフォーマンスが低下することを回避するために、そのロガーはすべての Bean インスタンスで共有されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.