モジュール java.logging
パッケージ java.util.logging

クラスLogManager

java.lang.Object
java.util.logging.LogManager

public class LogManager extends Object
Loggerとログ・サービスの共有状態のセットを管理するために使用される単一のグローバルLogManagerオブジェクトがあります。

このLogManagerには次の機能があります。

  • Loggerオブジェクトの階層化された名前空間を管理する。 名前付きLoggerはすべて、この名前空間内に格納される。
  • ログ制御のプロパティのセットを管理する。 これらは単にキーと値のペアである。Handlerやその他のロギング・オブジェクトはこれらを使ってそれ自体を構成できる。

グローバルLogManagerオブジェクトは、LogManager.getLogManager()を使って取得できます。 このLogManagerオブジェクトはクラスの初期化中に作成され、その後は変更できません。

LogManagerクラスは、起動時にjava.util.logging.managerシステム・プロパティを使用して配置されます。

LogManagerの構成

LogManagerは、LogManagerの初期化中にreadConfiguration()メソッドを介してロギング構成を初期化します。 デフォルトでは、LogManagerデフォルト構成が使用されます。 LogManagerによって読み取られるロギング構成は、「プロパティ・ファイル」形式である必要があります。

LogManagerは、readConfiguration()メソッドで指定されているように、初期構成を制御できる2つのオプションのシステム・プロパティを定義します:

  • java.util.logging.config.class
  • java.util.logging.config.file

これらの2つのシステム・プロパティは、コマンドラインで"java"コマンドに指定することも、JNI_CreateJavaVMに渡されるシステム・プロパティ定義として指定することもできます。

ロガーおよびハンドラのpropertiesには、ハンドラまたはロガーのドット区切りの名前で始まる名前が含まれます。
グローバル・ログのプロパティには次のものがあります。

  • handlersプロパティ これは、空白で区切られたハンドラ・クラスのクラス名のリストを定義して、ルートLogger (""という名前のLogger)のハンドラとしてロードし登録する。 各クラス名は、デフォルト・コンストラクタを持つHandlerクラスのものでなければいけません。 これらのHandlerは初回使用時に遅延作成されるので注意してください。
  • <ロガー>.handlersプロパティ。 これは、ロードし、指定されたロガーのハンドラとして登録すべきハンドラ・クラスのクラス名の、空白またはカンマで区切られたリストを定義します。 各クラス名は、デフォルト・コンストラクタを持つHandlerクラスのものでなければいけません。 これらのHandlerは初回使用時に遅延作成されるので注意してください。
  • プロパティ"<logger>.handlers.ensureCloseOnReset"。 ブール値を定義します。 "<logger>.handlers"が定義されていないか空の場合、このプロパティは無視されます。 それ以外の場合は、デフォルトでtrueになります。 値がtrueの場合、ロガーに関連付けられたハンドラは、reset()および停止時にクローズされることが保証されます。 これは、構成で"<logger>.handlers.ensureCloseOnReset=false"を明示的に設定することでオフにできます。 このプロパティをオフにすると、reset()がコールされる前にロガーがガベージ・コレクションを受ける可能性があるため、reset()でハンドラがクローズされないため、リソース・リークが発生するリスクがあります。 その場合、ロガーがガベージ・コレクションされる前にハンドラが閉じられるようにするのは、アプリケーションの責任です。
  • <logger>.useParentHandlersプロパティ。 これはboolean値を定義します。 すべてのロガーはデフォルトで、ロギング・メッセージをそれ自体で処理するだけでなく、その親の呼び出しも行います。その結果、メッセージがルート・ロガーによっても処理されることがよくあります。 このプロパティをfalseに設定した場合、このロガーのHandlerを構成する必要があります。そうしないと、ロギング・メッセージが配信されません。
  • configプロパティ このプロパティは、任意の構成コードを実行できるようにすることを目的とする。 このプロパティは、空白またはカンマで区切られたクラス名リストを定義します。 各名前付きクラスに対して新しいインスタンスが作成される。 各クラスのデフォルト・コンストラクタは、ロガー・レベルの設定、ハンドラの追加、フィルタの追加など、任意のコードを実行することでロギング構成を更新できます。

LogManagerの構成中にロードされるクラスはすべて、ユーザー・クラス・パス上で検索される前にまずシステム・クラス・パス上で検索されることに注意してください。 これにはLogManagerクラス、すべてのconfigクラス、すべてのhandlerクラスが含まれます。

Loggerは、そのドットで区切られた名前に基づいて、ネーミング階層へと構造化されます。 その結果、「a.b.c」は「a.b」の子になりますが、「a.b1」および「a.b2」はピアになります。

名前が「.level」で終わるプロパティはすべて、Loggerのログ・レベルを定義しているとみなされます。 したがって、「foo.level」は「foo」と呼ばれるロガー、およびネーミング階層にあるその子のログ・レベルを再帰的に定義します。 ログ・レベルは、プロパティ・ファイルで定義した順に適用されます。 したがって、ツリー内の子ノードに対するレベルの設定は親に対する設定のあとに行う必要があります。 プロパティ名「.level」を使えば、ツリーのルートのレベルを設定できます。

LogManagerオブジェクトのすべてのメソッドはマルチ・スレッドに対して安全です。

導入されたバージョン:
1.4