- 含まれているクラス:
System
LoggerFinder
サービスは、使用する基礎となるフレームワークに対するロガーの作成、管理および構成を担当します。 ロガー・ファインダは、ゼロ引数のコンストラクタを持ち、このクラスで定義された抽象メソッドを実装する、このクラスの具体的な実装です。 ロガー・ファインダから返されたロガーは、このプロバイダがサポートするロギング・バックエンドにログ・メッセージをルーティングできます。 Java Runtimeの呼び出しによって、次のようにロードされる単一のシステム全体のLoggerFinderインスタンスが維持されます:
- 最初に、「システム・クラス・ローダー」を使用して
ServiceLoader
機能を使用してカスタムLoggerFinder
プロバイダを検索します。 LoggerFinder
プロバイダが見つからない場合は、システムのデフォルトのLoggerFinder
実装が使用されます。
アプリケーションは、System.LoggerFinder
サービスの実装を指定および宣言するだけで、ロギング・バックエンド「java.loggingモジュールが存在する場合でも」を置き換えることができます。
デフォルトの実装
java.logging
モジュールが存在する場合、システム・デフォルトのLoggerFinder
実装では、バックエンド・フレームワークとしてjava.util.logging
が使用されます。 ログ・メッセージをjava.util.logging.Logger
にルーティングするloggerインスタンスを返します。 それ以外の場合、java.logging
が存在しない場合、デフォルトの実装は、INFO
レベル以上のログ・メッセージをコンソール(System.err
)にルーティングする単純なロガー・インスタンスを返します。
ロギング構成
LoggerFinder
ファクトリ・メソッドから取得したLoggerインスタンスは、アプリケーションによって直接構成できません。 構成は基礎となるロギング・バックエンドの責任であり、通常は、そのバックエンドに固有のAPIを使用する必要があります。
バックエンドとしてjava.util.logging
を使用するデフォルトのLoggerFinder
実装については、ロギング構成についてはjava.util.logging
を参照してください。 java.logging
モジュールが存在しないときに単純なロガーを返すデフォルトのLoggerFinder
実装の場合、構成は実装に依存します。
通常、ロギング・フレームワークを使用するアプリケーションは、そのフレームワークによって定義された(またはサポートされている)というロガー・ファサードを介してメッセージをログに記録します。 外部フレームワークを使用するアプリケーションは、そのフレームワークに関連付けられているファサードを介してログに記録する必要があります。
メッセージをログに記録する必要があるシステム・クラスは、通常、アプリケーションで選択されたロギング・フレームワークにメッセージをルーティングするためにSystem.Logger
インスタンスを取得します。
ログ・メッセージを生成するためにロガーのみが必要なライブラリおよびクラスは、LoggerFinder
サービスの特定の実装に依存するため、ロガーを単独で構成しようとしないでください。
また、セキュリティ・マネージャが存在する場合、システム・クラスに提供されるロガーは、権限を必要とせずにロギング・バックエンドを介して直接構成できません。
具体的なLoggerFinder
実装のプロバイダは、これらのロガーが適切な権限チェックなしで信頼できないコードによって構成されないようにする必要があります。このようなロガーに対して実行される構成は、通常、同じJavaランタイム内のすべてのアプリケーションに影響します。
メッセージレベルとバックエンド・レベルへのマッピング
ロガー・ファインダは、 System.Logger.Level
から、それが使用するロギング・バックエンドでサポートされているレベルへのマッピングを担当します。
バックエンドとしてjava.util.logging
を使用するデフォルトのLoggerFinderは、System.Logger
レベルを対応する重大度のjava.util.loggingレベルにマップ - Logger.Level
を参照してください。
- 導入されたバージョン:
- 9
- 関連項目:
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明getLocalizedLogger
(String name, ResourceBundle bundle, Module module) 指定されたmodule
のLogger
のローカライズ可能なインスタンスを返します。abstract System.Logger
与えられたmodule
のLogger
のインスタンスを返します。static System.LoggerFinder
LoggerFinder
インスタンスを返します。
-
コンストラクタの詳細
-
LoggerFinder
protected LoggerFinder()LoggerFinder
の新しいインスタンスを作成します。- 実装上のノート:
- サービス・プロバイダのインスタンス化中にデッドロックまたはクラス・ロード・サイクルが発生するリスクを回避するために、
LoggerFinder
サービス実装は、そのコンストラクタで重い初期化を実行しないことをお薦めします。 - 例外:
SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドでRuntimePermission("loggerFinder")
が許可されていない場合。
-
-
メソッドの詳細
-
getLogger
public abstract System.Logger getLogger(String name, Module module) 与えられたmodule
のLogger
のインスタンスを返します。- パラメータ:
name
- ロガーの名前。module
- ロガーがリクエストされているモジュール。- 戻り値:
- 指定されたモジュール内での使用に適した
logger
。 - 例外:
NullPointerException
-name
がnull
またはmodule
がnull
の場合。SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドでRuntimePermission("loggerFinder")
が許可されていない場合。
-
getLocalizedLogger
public System.Logger getLocalizedLogger(String name, ResourceBundle bundle, Module module) 指定されたmodule
のLogger
のローカライズ可能なインスタンスを返します。 返されたロガーは、提供されたリソース・バンドルをメッセージのローカリゼーションに使用します。- 実装要件:
- デフォルトでは、このメソッドは
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
-name
がnull
またはmodule
がnull
の場合。SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドでRuntimePermission("loggerFinder")
が許可されていない場合。
-
getLoggerFinder
public static System.LoggerFinder getLoggerFinder()LoggerFinder
インスタンスを返します。 Javaランタイムには、1つのシステム全体のLoggerFinder
インスタンスがあります。LoggerFinder
実装が配置およびロードされる方法については、クラス仕様を参照してください。- 戻り値:
LoggerFinder
インスタンス。- 例外:
SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドでRuntimePermission("loggerFinder")
が許可されていない場合。
-