クラスFileHandler


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
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    デフォルトのFileHandlerを作成します。
    FileHandlerを初期化して、指定されたファイル名に書き込みます。
    FileHandler(String pattern, boolean append)
    FileHandlerを初期化して指定のファイル名に書き込みます(オプションの追加)。
    FileHandler(String pattern, int limit, int count)
    FileHandlerを初期化して、一連のファイルに書き込みます。
    FileHandler(String pattern, int limit, int count, boolean append)
    FileHandlerを初期化して、オプションのappendを使用して一連のファイルに書き込みます。
    FileHandler(String pattern, long limit, int count, boolean append)
    FileHandlerを初期化して、オプションのappendを使用して一連のファイルに書き込みます。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    すべてのファイルを閉じます。
    void
    LogRecordを書式設定して公開します。

    クラスで宣言されたメソッド StreamHandler

    flush, isLoggable, setEncoding, setOutputStream
    修飾子と型
    メソッド
    説明
    void
    すべてのバッファされたメッセージをフラッシュします。
    boolean
    このHandlerが特定のLogRecordを実際にログに記録するかどうかを確認します。
    void
    setEncoding(String encoding)
    (または変更)に、このHandlerで使用される文字エンコーディングを設定します。
    protected void
    出力ストリームを変更します。

    クラス Handlerで宣言されたメソッド

    getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
    修飾子と型
    メソッド
    説明
    このHandlerの文字エンコーディングを返します。
    このHandlerのErrorManagerを取得します。
    このHandlerの現在のFilterを取得します。
    このHandlerFormatterを返します。
    このHandlerによってログに記録されるメッセージを指定するログ・レベルを取得します。
    protected void
    reportError(String msg, Exception ex, int code)
    このHandlerのErrorManagerにエラーを通知する簡易protected簡易メソッドです。
    void
    このHandlerのErrorManagerを定義します。
    void
    setFilter(Filter newFilter)
    Filterを設定して、このHandlerの出力を制御します。
    void
    setFormatter(Formatter newFormatter)
    Formatterを設定します。
    void
    setLevel(Level newLevel)
    このHandlerによってログに記録されるメッセージ・レベルを指定するログ・レベルを設定します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • FileHandler

      public FileHandler() throws IOException
      デフォルトのFileHandlerを作成します。 これは、LogManagerプロパティ(またはデフォルト値)から完全に構成されます。
      スロー:
      IOException - ファイルを開くときに入出力の問題が発生した場合。
      NullPointerException - patternプロパティが空の文字列である場合。
    • FileHandler

      public FileHandler(String pattern) throws IOException
      FileHandlerを初期化して、指定されたファイル名に書き込みます。

      FileHandlerは、指定されたパターン引数がファイル名パターンとして使用され、ファイル制限が制限なしに設定され、ファイル数が1に設定されることを除き、LogManagerプロパティ(またはデフォルト値)に基づいて構成されます。

      書き込まれるデータの総量に制限がないので、注意して使用してください。

      パラメータ:
      pattern - 出力ファイルの名前
      スロー:
      IOException - ファイルを開くときに入出力の問題が発生した場合。
      IllegalArgumentException - patternが空の文字列である場合
    • FileHandler

      public FileHandler(String pattern, boolean append) throws IOException
      FileHandlerを初期化して指定のファイル名に書き込みます(オプションの追加)。

      FileHandlerは、指定されたパターン引数がファイル名パターンとして使用され、ファイル制限が制限なしに設定され、ファイル数が1に設定され、追加モードが指定されたappend引数に設定されていることを除き、LogManagerプロパティ(またはデフォルト値)に基づいて構成されます。

      書き込まれるデータの総量に制限がないので、注意して使用してください。

      パラメータ:
      pattern - 出力ファイルの名前
      append - 追加モードを指定する
      スロー:
      IOException - ファイルを開くときに入出力の問題が発生した場合。
      IllegalArgumentException - patternが空の文字列である場合
    • FileHandler

      public FileHandler(String pattern, int limit, int count) throws IOException
      FileHandlerを初期化して、一連のファイルに書き込みます。 1つのファイルに指定されたおよその制限量まで書き込まれると、別のファイルが開かれます。 出力先は、count個の一連のファイルの間で循環します。

      FileHandlerは、指定されたパターン引数がファイル名パターンとして使用され、ファイル制限が制限引数に設定され、ファイル数が指定されたcount引数に設定されることを除き、LogManagerプロパティ(またはデフォルト値)に基づいて構成されます。

      カウントは少なくとも1である必要があります。

      パラメータ:
      pattern - 出力ファイルの名前付けのパターン
      limit - 任意の1つのファイルに書き込む最大バイト数
      count - 使用するファイル数
      スロー:
      IOException - ファイルを開くときに入出力の問題が発生した場合。
      IllegalArgumentException - limit < 0またはcount < 1の場合。
      IllegalArgumentException - patternが空の文字列である場合
    • FileHandler

      public FileHandler(String pattern, int limit, int count, boolean append) throws IOException
      FileHandlerを初期化して、オプションのappendを使用して一連のファイルに書き込みます。 1つのファイルに指定されたおよその制限量まで書き込まれると、別のファイルが開かれます。 出力先は、count個の一連のファイルの間で循環します。

      FileHandlerは、指定されたパターン引数がファイル名パターンとして使用され、ファイル制限が制限引数に設定され、ファイル数が指定されたカウント引数に設定され、追加モードが指定されたappend引数に設定されることを除き、LogManagerプロパティ(またはデフォルト値)に基づいて構成されます。

      カウントは少なくとも1である必要があります。

      パラメータ:
      pattern - 出力ファイルの名前付けのパターン
      limit - 任意の1つのファイルに書き込む最大バイト数
      count - 使用するファイル数
      append - 追加モードを指定する
      スロー:
      IOException - ファイルを開くときに入出力の問題が発生した場合。
      IllegalArgumentException - limit < 0またはcount < 1の場合。
      IllegalArgumentException - patternが空の文字列である場合
    • FileHandler

      public FileHandler(String pattern, long limit, int count, boolean append) throws IOException
      FileHandlerを初期化して、オプションのappendを使用して一連のファイルに書き込みます。 1つのファイルに指定されたおよその制限量まで書き込まれると、別のファイルが開かれます。 出力先は、count個の一連のファイルの間で循環します。

      FileHandlerは、指定されたパターン引数がファイル名パターンとして使用され、ファイル制限が制限引数に設定され、ファイル数が指定されたカウント引数に設定され、追加モードが指定されたappend引数に設定されることを除き、LogManagerプロパティ(またはデフォルト値)に基づいて構成されます。

      カウントは少なくとも1である必要があります。

      パラメータ:
      pattern - 出力ファイルの名前付けのパターン
      limit - 任意の1つのファイルに書き込む最大バイト数
      count - 使用するファイル数
      append - 追加モードを指定する
      スロー:
      IOException - ファイルを開くときに入出力の問題が発生した場合。
      IllegalArgumentException - limit < 0またはcount < 1の場合。
      IllegalArgumentException - patternが空の文字列である場合
      導入されたバージョン:
      9
  • メソッドの詳細

    • publish

      public void publish(LogRecord record)
      LogRecordを書式設定して公開します。
      オーバーライド:
      publish、クラスStreamHandler
      パラメータ:
      record - ログ・イベントの説明。 nullレコードは何の通知もなく無視され、発行されない
    • close

      public void close()
      すべてのファイルを閉じます。
      オーバーライド:
      close、クラスStreamHandler