クラスHandler

java.lang.Object
java.util.logging.Handler
直系の既知のサブクラス:
MemoryHandler, StreamHandler

public abstract class Handler extends Object
Handlerオブジェクトは、Loggerからログ・メッセージを取得し、それらをエクスポートします。 たとえば、このオブジェクトは、コンソールやファイルに書き込み、ネットワーク・ログ・サービスに送信し、OSログへの転送などを実行します。

Handlerは、setLevel(Level.OFF)を実行して無効にでき、適切なレベルでsetLevelを実行して再度有効にできます。

Handlerクラスは、通常、LogManagerプロパティを使用して、HandlerFilterFormatterおよびLevelのデフォルト値を設定します。 各具象Handlerクラスの特定のドキュメントを参照してください。

ハンドラのスレッド安全性とデッドロックのリスク

Handlerの実装はスレッドセーフである必要があります。 ハンドラは、任意のスレッドから同時に呼び出される必要があります。 ただし、同期を過剰に使用すると、不要なスレッド競合、パフォーマンスの問題、さらにはデッドロックが発生する可能性があります。

特に、サブクラスは、特にログ・レコードの書式設定中に、ユーザーが指定した任意のオブジェクトに対してコールバックするコードに関するロックを取得しないようにする必要があります。 このようなコールバックをロックすると、ロギング・コードとユーザー・コードの間にデッドロック・リスクが生じます。

そのため、汎用的なHandlerサブクラスは、publish(LogRecord)メソッドを同期したり、ロックを保持しながらsuper.publish()をコールしたりしないでください。これは、通常、ユーザー指定の引数を処理してフォーマットする必要があるためです。

導入されたバージョン:
1.4
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    デフォルトのコンストラクタです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract void
    Handlerを閉じて、関連するすべてのリソースを解放します。
    abstract void
    バッファリングされた出力をフラッシュします。
    このHandlerの文字エンコーディングを返します。
    このHandlerのErrorManagerを取得します。
    このHandlerの現在のFilterを取得します。
    このHandlerFormatterを返します。
    このHandlerによってログに記録されるメッセージを指定するログ・レベルを取得します。
    boolean
    このHandlerが特定のLogRecordを実際にログに記録するかどうかを確認します。
    abstract void
    LogRecordを公開します。
    protected void
    reportError(String msg, Exception ex, int code)
    このHandlerのErrorManagerにエラーを通知する簡易protected簡易メソッドです。
    void
    setEncoding(String encoding)
    このHandlerで使用する文字エンコーディングを設定します。
    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であるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • Handler

      protected Handler()
      デフォルトのコンストラクタです。 結果のHandlerのログ・レベルはLevel.ALLFormatterなし、Filterなしです。 デフォルトのErrorManagerインスタンスは、ErrorManagerとしてインストールされます。
  • メソッドの詳細

    • publish

      public abstract void publish(LogRecord record)
      LogRecordを公開します。

      ロギング・リクエストは最初にLoggerオブジェクトに行われ、LogRecordを初期化し、ここに転送しました。

      Handlerは、必要に応じてメッセージを書式設定します。 フォーマット処理にはローカライズも含まれるべきです。

      APIのノート:
      デッドロックのリスクを回避するために、このメソッドの実装では、LogRecordの書式設定など、アプリケーション・コードへのコール中にロックが保持されないようにする必要があります。
      パラメータ:
      record - ログ・イベントの説明。 nullレコードは何の通知もなく無視され、発行されない
    • flush

      public abstract void flush()
      バッファリングされた出力をフラッシュします。
    • close

      public abstract void close()
      Handlerを閉じて、関連するすべてのリソースを解放します。

      closeメソッドは、flushを実行し、Handlerを閉じます。 closeが呼び出されたあと、このHandlerは使用されなくなります。 メソッド呼出しを行った場合、その呼出しは何の通知もなく無視されるか、実行時例外がスローされます。

    • setFormatter

      public void setFormatter(Formatter newFormatter)
      Formatterを設定します。 このFormatterは、このHandlerLogRecordsの書式設定に使用されます。

      Handlersの中には、Formattersを使用しないものがあります。その場合、Formatterは記憶されますが、使用されません。

      パラメータ:
      newFormatter - (nullにできません)を使用するFormatter
    • getFormatter

      public Formatter getFormatter()
      このHandlerFormatterを返します。
      戻り値:
      Formatter (nullの場合がある)。
    • setEncoding

      public void setEncoding(String encoding) throws UnsupportedEncodingException
      このHandlerで使用する文字エンコーディングを設定します。

      エンコーディングは、LogRecordsHandlerに書き込まれる前に設定する必要があります。

      パラメータ:
      encoding - サポートされる文字エンコーディングの名前。 nullも可能。これはデフォルトのプラットフォーム・エンコーディングを示す
      スロー:
      UnsupportedEncodingException - 指定された文字エンコーディングがサポートされていない場合。
    • getEncoding

      public String getEncoding()
      このHandlerの文字エンコーディングを返します。
      戻り値:
      エンコーディング名。 nullも可能。これはデフォルトのエンコーディングを使用すべきであることを示す
    • setFilter

      public void setFilter(Filter newFilter)
      Filterを設定して、このHandlerの出力を制御します。

      publishの各コールについて、HandlerはこのFilter (null以外の場合)をコールして、LogRecordを公開または破棄する必要があるかどうかを確認します。

      パラメータ:
      newFilter - Filterオブジェクト(nullの場合がある)
    • getFilter

      public Filter getFilter()
      このHandlerの現在のFilterを取得します。
      戻り値:
      Filterオブジェクト(nullの場合がある)
    • setErrorManager

      public void setErrorManager(ErrorManager em)
      このHandlerのErrorManagerを定義します。

      ErrorManagerのerrorメソッドは、このHandlerを使用中にエラーが発生した場合に呼び出されます。

      パラメータ:
      em - 新しいErrorManager
    • getErrorManager

      public ErrorManager getErrorManager()
      このHandlerのErrorManagerを取得します。
      戻り値:
      このハンドラのErrorManager
    • reportError

      protected void reportError(String msg, Exception ex, int code)
      このHandlerのErrorManagerにエラーを通知する簡易protected簡易メソッドです。
      パラメータ:
      msg - 記述文字列(nullの場合がある)
      ex - 例外(nullの場合がある)
      code - ErrorManagerで定義されたエラー・コード
    • setLevel

      public void setLevel(Level newLevel)
      このHandlerによってログに記録されるメッセージ・レベルを指定するログ・レベルを設定します。 この値より小さいメッセージ・レベルは破棄されます。

      開発者は、voluminousロギングをオンにできますが、特定のHandlersに送信されるメッセージを制限することが目的です。

      パラメータ:
      newLevel - ログ・レベルの新しい値
    • getLevel

      public Level getLevel()
      このHandlerによってログに記録されるメッセージを指定するログ・レベルを取得します。 このレベルより小さいメッセージ・レベルは破棄されます。
      戻り値:
      ログをとるメッセージ・レベル
    • isLoggable

      public boolean isLoggable(LogRecord record)
      このHandlerが特定のLogRecordを実際にログに記録するかどうかを確認します。

      このメソッドは、LogRecordに適切なLevelがあるかどうか、およびFilterを満たすかどうかをチェックします。 また、ハンドラがLogRecordのロギングを妨げる可能性のあるその他のHandler固有のチェックを行うこともできます。 LogRecordがnullの場合、falseが返されます。

      パラメータ:
      record - LogRecord (nullの場合がある)。
      戻り値:
      LogRecordがログに記録される場合はtrue。