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