モジュール java.base
パッケージ java.lang

クラスSystem.LoggerFinder

  • 含まれているクラス:
    System

    public abstract static class System.LoggerFinder
    extends Object
    LoggerFinderサービスは、使用する基礎となるフレームワークに対してロガーを作成、管理および構成します。 ロガー・ファインダは、引数なしのコンストラクタを持ち、このクラスによって定義された抽象メソッドを実装する、このクラスの具体的な実装です。 ロガー・ファインダから返されたロガーは、このプロバイダがサポートするロギング・バックエンドにログ・メッセージをルーティングできます。 特定のJavaランタイムの起動により、次のようにロードされる単一のシステム全体のLoggerFinderインスタンスが維持されます。
    • 最初に、システム・クラス・ローダーとともにServiceLoader機能を使用して、カスタムLoggerFinderプロバイダを検索します。
    • LoggerFinderプロバイダが見つからない場合は、システムのデフォルトのLoggerFinder実装が使用されます。

    アプリケーションは、java.loggingモジュールが存在する場合でもSystem.LoggerFinderサービスの実装を提供および宣言するだけで、ロギング・バックエンドを置換できます。

    デフォルトの実装

    システムのデフォルトのLoggerFinder実装では、java.loggingモジュールが存在する場合、バックエンド・フレームワークとしてjava.util.loggingが使用されます。 ログ・メッセージをjava.util.logging.Loggerにルーティングするロガー・インスタンスを返します。 それ以外の場合、java.loggingが存在しない場合、デフォルトの実装は、INFOレベル以上のログ・メッセージをコンソール(System.err)にルーティングする単純なロガー・インスタンスを返します。

    ロギング構成

    LoggerFinderファクトリ・メソッドから取得したLoggerインスタンスは、アプリケーションによって直接構成することはできません。 構成は基礎となるロギング・バックエンドの責任であり、通常はそのバックエンドに固有のAPIを使用する必要があります。

    java.util.loggingをバックエンドとして使用するデフォルトのLoggerFinder実装については、java.util.loggingでロギング構成を参照してください。 java.loggingモジュールがない場合に単純なロガーを返すデフォルトのLoggerFinder実装の場合、構成は実装に依存します。

    通常、ロギング・フレームワークを使用するアプリケーションは、そのフレームワークによって定義(またはサポート)されたロガー・ファサードを介してメッセージをログに記録します。 外部フレームワークを使用するアプリケーションは、そのフレームワークに関連付けられたファサードを経由する必要があります。

    メッセージをログに記録する必要があるシステム・クラスは、通常、アプリケーションによって選択されたロギング・フレームワークにメッセージをルーティングするSystem.Loggerインスタンスを取得します。

    ログ・メッセージを生成するためにロガーのみを必要とするライブラリおよびクラスは、LoggerFinderサービスの特定の実装に依存するため、ロガーを単独で構成しようとしないでください。

    また、セキュリティ・マネージャが存在する場合、システム・クラスに提供されるロガーは、権限を必要とせずにロギング・バックエンドを介して直接構成することはできません。
    これらのロガーに対して実行される構成は、通常、同じJavaランタイム内のすべてのアプリケーションに影響するため、これらのロガーが適切な権限チェックなしで信頼できないコードによって構成されないようにするには、具体的なLoggerFinder実装のプロバイダが責任を負います。

    メッセージ・レベルとバックエンド・レベルへのマッピング

    ロガー・ファインダは、 System.Logger.Levelから、使用するロギング・バックエンドでサポートされているレベルへのマッピングを担当します。
    java.util.loggingをバックエンドとして使用するデフォルトのLoggerFinderは、System.Loggerレベルを対応する重大度のjava.util.loggingレベルにマップします(Logger.Levelを参照)。

    導入されたバージョン:
    9
    関連項目:
    System, System.Logger
    • コンストラクタの詳細

      • LoggerFinder

        protected LoggerFinder()
        LoggerFinderの新しいインスタンスを作成します。
        実装上のノート:
        LoggerFinderサービス実装では、サービス・プロバイダのインスタンス化中にデッドロックまたはクラス・ロード・サイクルが発生するリスクを回避するために、コンストラクタ内で重い初期化を実行しないことをお薦めします。
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドでRuntimePermission("loggerFinder")が許可されていない場合。
    • メソッドの詳細

      • getLogger

        public abstract System.Logger getLogger​(String name,
                                                Module module)
        指定されたmoduleLoggerのインスタンスを返します。
        パラメータ:
        name - ロガーの名前。
        module - ロガーがリクエストされているモジュール。
        戻り値:
        指定されたモジュール内での使用に適したlogger
        例外:
        NullPointerException - namenullの場合、またはmodulenullの場合。
        SecurityException - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドでRuntimePermission("loggerFinder")が許可されていない場合。
      • getLocalizedLogger

        public System.Logger getLocalizedLogger​(String name,
                                                ResourceBundle bundle,
                                                Module module)
        指定されたmoduleLoggerのローカライズ可能なインスタンスを返します。 返されるロガーは、指定されたリソース・バンドルをメッセージのローカライズに使用します。
        実装要件:
        デフォルトでは、このメソッドはthis.getLogger(name, module)を呼び出してロガーを取得し、System.Loggerインスタンスでそのロガーをラップします。この場合、ResourceBundleをパラメータとして取得しないすべてのメソッドは、ローカライゼーションのために指定されたbundleを渡すものにリダイレクトされます。 したがって、たとえば、Logger.log(Level.INFO, msg)へのコールは、ラップされたロガー・インスタンス上のLogger.log(Level.INFO, bundle, msg, (Object[])null)へのコールとして終了します。 ただし、デフォルトでは、Supplier<String>によって返される文字列メッセージはローカライズされません。このような文字列は、リソース・バンドル内のキーではなく、すでに構築されているメッセージであると想定されるためです。

        LoggerFinderの実装は、このメソッドをオーバーライドできます。たとえば、基礎となるロギング・バックエンドがログ・メッセージをローカライズするための独自のメカニズムを提供する場合、このようなLoggerFinderは、バックエンドによって提供されるメカニズムを直接利用するロガーを自由に返すことができます。

        パラメータ:
        name - ロガーの名前。
        bundle - リソース・バンドル。nullにできます。
        module - ロガーがリクエストされているモジュール。
        戻り値:
        指定されたリソース・バンドルをメッセージのローカライゼーションに使用するLoggerのインスタンス。
        例外:
        NullPointerException - namenullの場合、またはmodulenullの場合。
        SecurityException - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドでRuntimePermission("loggerFinder")が許可されていない場合。
      • getLoggerFinder

        public static System.LoggerFinder getLoggerFinder()
        LoggerFinderインスタンスを返します。 Javaランタイムには、システム全体のLoggerFinderインスタンスが1つあります。 LoggerFinder実装が配置およびロードされる方法のクラス仕様を参照してください。
        戻り値:
        LoggerFinderインスタンス。
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドでRuntimePermission("loggerFinder")が許可されていない場合。