- 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
の新しいインスタンスを作成します。
-
メソッドのサマリー
修飾子と型 メソッド 説明 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")
を許可しない場合。
-
-