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

クラスFileHandler

java.lang.Object

public class FileHandler extends StreamHandler
単純なファイル・ロギングHandler

FileHandlerは、指定されたファイルに書き込むか、ローテーションするファイル・セットに書き込むことができます。

ファイルのローテーション・セットの場合、各ファイルが指定されたサイズの限度に到達すると、そのファイルが閉じられ、交換して新しいファイルが開かれます。 続いて、「0」、「1」、「2」などを基本ファイル名に追加することで、古いファイルの名前が付けられます。

デフォルトで、バッファリングは入出力ライブラリで使用可能ですが、各ログ・レコードは完了時にフラッシュされます。

デフォルトでは、XMLFormatterクラスが書式設定に使用されます。

構成: デフォルトでは、各FileHandlerは、次のLogManager構成プロパティを使用して初期化されます。<handler-name>は、ハンドラの完全修飾クラス名を示します。 プロパティが未定義である場合(または無効な値を持つ場合)、指定されたデフォルト値が使用されます。

  • <handler-name>.levelは、Handler (デフォルトはLevel.ALLです)のデフォルト・レベルを指定します。
  • <handler-name>.filterは、(デフォルトはFilterではありません)を使用するFilterクラスの名前を指定します。
  • <handler-name>.formatterは、(デフォルトはjava.util.logging.XMLFormatterです)を使用するFormatterクラスの名前を指定
  • <handler-name>.encodingは使用する文字セット・エンコーディングの名前を指定します(デフォルトは、デフォルト・プラットフォームのエンコーディング)。
  • <handler-name>.limitは任意の1ファイルに書き込むおおよその最大量(バイト)を指定します。 これがゼロの場合は無制限となる。 (デフォルトは無制限)
  • <handler-name>.countは循環する出力ファイル数を指定します(デフォルトは1)。
  • <handler-name>.patternは出力ファイル名を生成するためのパターンを指定します。 詳細は下記を参照。 (デフォルトは「%h/java%u.log」)
  • <handler-name>.appendはFileHandlerが任意の既存のファイルに追加するかどうかを指定します(デフォルトはfalse)。
  • <handler-name>.maxLocksは、FileHandler (デフォルトは100)によって保持される同時ロックの最大数を指定します。

たとえば、FileHandlerのプロパティは次のようになります。

  • java.util.logging.FileHandler.level=INFO
  • java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

カスタム・ハンドラ(例: com.foo.MyHandler)の場合、プロパティは次のようになります。

  • com.foo.MyHandler.level=INFO
  • com.foo.MyHandler.formatter=java.util.logging.SimpleFormatter

パターンは、実行時に置き換えられる、次の特殊コンポーネントを含む文字列から構成されます。

  • "/"ローカル・パス名の区切り文字
  • "%t"システムの一時ディレクトリ
  • "%h" user.homeシステム・プロパティの値
  • "%g"ログのローテーションを識別する生成番号
  • "%u"重複を解決する一意の番号
  • "%%"単一のパーセント符号%に変換
"%g"フィールドが指定されず、ファイル・カウントが1より大きい場合、生成されたファイル名の末尾のドットのあとに生成番号が追加されます。

このように、たとえばカウント2を持つパターン「%t/java%g.log」では、通常ログ・ファイルをSolarisの場合は/var/tmp/java0.logと/var/tmp/java1.logに書き込み、一方、通常Windows 95の場合はC:\TEMP\java0.logとC:\TEMP\java1.logに書き込みます。

生成番号は0、1、2のような連続番号になります。

通常、一意フィールド「%u」は0に設定されます。 ただし、FileHandlerがファイル名を開こうとして、そのファイルが別のプロセスによって現在使用中であることが検出された場合は、一意の番号フィールドが増分され、再試行してください。 これは、FileHandlerが現在使用されていないファイル名を見つけるまで繰り返されます。 重複があり、「%u」フィールドが指定されない場合、ファイル名の末尾のドットのあとに追加されます。 これは自動的に追加される生成番号のあとになります。

このため、3つのプロセスのすべてがfred%u.%g.txtにログを記録しようとする場合、プロセスのローテーションの順番に従って、最初のファイルとしてfred0.0.txt、fred1.0.txt、fred2.0.txtを使用することになります。

重複を避けるための一意のIDの使用は、ローカル・ディスクのファイル・システム使用時にのみ、確実な動作が保証されることに注意してください。

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