クラスMemoryHandler

java.lang.Object
java.util.logging.Handler
java.util.logging.MemoryHandler

public class MemoryHandler extends Handler
メモリー内の循環バッファでリクエストをバッファするHandler

通常、このHandlerは、受信したLogRecordsをメモリー・バッファに格納し、以前のレコードを破棄します。 このバッファ処理は非常に低コストであり、フォーマット処理のコストもかかりません。 特定のトリガー条件では、MemoryHandlerは、現在のバッファ・コンテンツをターゲットHandlerにプッシュします。このターゲットは、通常は外部に公開します。

バッファをプッシュするトリガー・モデルには、主に次の3つがあります。

  • 着信LogRecordには、事前定義済レベル(pushLevel)より大きいタイプがあります。
  • 外部クラスは、pushメソッドを明示的にコールします。
  • サブクラスは、logメソッドをオーバーライドし、受信する各LogRecordをスキャンし、レコードが目的の条件に一致する場合はpushをコールします。

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

  • <handler-name>.levelは、Handler (デフォルトはLevel.ALLです)のレベルを指定します。
  • <handler-name>.filterは、(デフォルトはFilterではありません)を使用するFilterクラスの名前を指定します。
  • <handler-name>.sizeはバッファー・サイズを定義します(デフォルトは1000)。
  • <handler-name>.pushは、pushLevel (デフォルトはlevel.SEVEREです)を定義します。
  • <handler-name>.targetは、ターゲットのHandler クラスの名前を指定します。(デフォルトなし)。

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

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

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

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

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

    コンストラクタ
    コンストラクタ
    説明
    MemoryHandlerを作成し、LogManager構成プロパティに基づいて構成します。
    MemoryHandler(Handler target, int size, Level pushLevel)
    MemoryHandlerを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    Handlerを閉じて、関連するすべてのリソースを解放します。
    void
    ターゲットHandlerでフラッシュします。
    pushLevelを取得します。
    boolean
    このHandlerが特定のLogRecordを内部バッファに実際にログに記録するかどうかを確認します。
    void
    内部バッファにLogRecordを格納します。
    void
    バッファされた出力をターゲットHandlerにプッシュします。
    void
    setPushLevel(Level newLevel)
    pushLevelを設定します。

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

    getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
    修飾子と型
    メソッド
    説明
    このHandlerの文字エンコーディングを返します。
    このHandlerのErrorManagerを取得します。
    このHandlerの現在のFilterを取得します。
    このHandlerFormatterを返します。
    このHandlerによってログに記録されるメッセージを指定するログ・レベルを取得します。
    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であるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • MemoryHandler

      public MemoryHandler()
      MemoryHandlerを作成し、LogManager構成プロパティに基づいて構成します。
    • MemoryHandler

      public MemoryHandler(Handler target, int size, Level pushLevel)
      MemoryHandlerを作成します。

      MemoryHandlerは、指定されたpushLevel引数およびバッファ・サイズ引数が使用されることを除き、LogManagerプロパティ(またはデフォルト値)に基づいて構成されます。

      パラメータ:
      target - 出力を通知するHandler。
      size - バッファ処理するログ・レコードの数(ゼロより大きくなければならない)
      pushLevel - プッシュを行うメッセージ・レベル
      スロー:
      IllegalArgumentException - サイズが0以下の場合
  • メソッドの詳細

    • publish

      public void publish(LogRecord record)
      内部バッファにLogRecordを格納します。

      Filterがある場合、指定されたログ・レコードがloggableかどうかを確認するために、そのisLoggableメソッドがコールされます。 可能でない場合は戻ります。 それ以外の場合、指定されたレコードが内部の循環バッファにコピーされます。 次に、レコードのレベル・プロパティがpushLevelと比較されます。 指定されたレベルがpushLevel以上の場合、pushがコールされ、バッファされたすべてのレコードがターゲット出力Handlerに書き込まれます。

      定義:
      publish、クラスHandler
      パラメータ:
      record - ログ・イベントの説明。 nullレコードは何の通知もなく無視され、発行されない
    • push

      public void push()
      バッファされた出力をターゲットHandlerにプッシュします。

      バッファがクリアされます。

    • flush

      public void flush()
      ターゲットHandlerでフラッシュします。

      MemoryHandlerバッファの現在の内容は書き込まれないことに注意してください。 書き出すにはpushが必要になります。

      定義:
      flush、クラスHandler
    • close

      public void close()
      Handlerを閉じて、関連するすべてのリソースを解放します。 これにより、ターゲットHandlerもクローズされます。
      定義:
      close、クラスHandler
    • setPushLevel

      public void setPushLevel(Level newLevel)
      pushLevelを設定します。 LogRecordが内部バッファにコピーされた後、そのレベルがpushLevel以上の場合は、pushがコールされます。
      パラメータ:
      newLevel - pushLevelの新しい値
    • getPushLevel

      public Level getPushLevel()
      pushLevelを取得します。
      戻り値:
      pushLevelの値
    • isLoggable

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

      このメソッドは、LogRecordに適切なレベルがあるかどうか、およびFilterを満たすかどうかをチェックします。 ただし、LogRecordがバッファ・コンテンツの"push"になるかどうかはチェックされません。 LogRecordがnullの場合、falseが返されます。

      オーバーライド:
      isLoggable、クラスHandler
      パラメータ:
      record - LogRecord (nullの場合がある)。
      戻り値:
      LogRecordがログに記録される場合はtrue。