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

クラスMemoryHandler


  • public class MemoryHandler
    extends Handler
    メモリーの循環バッファの要求をバッファ処理するHandlerです。

    通常、このHandlerは単に、受信したLogRecordを自身のメモリー・バッファ内に格納し、以前のレコードを破棄します。 このバッファ処理は非常に低コストであり、フォーマット処理のコストもかかりません。 特定のトリガー条件が成立すると、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 specifies the name of the target Handler class.(デフォルトなし)

    たとえば、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

        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が存在する場合、そのisLoggableメソッドが呼び出され、指定されたログ・レコードがロギング可能かどうかがチェックされます。 可能でない場合は戻ります。 それ以外の場合、指定されたレコードが内部の循環バッファにコピーされます。 次に、そのレコードのlevelプロパティと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()
                   throws SecurityException
        Handlerを閉じて、関連するすべてのリソースを解放します。 これは、ターゲットHandlerも閉じます。
        定義:
        close、クラス: Handler
        例外:
        SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がLoggingPermission("control")を持っていない場合。
      • setPushLevel

        public void setPushLevel​(Level newLevel)
                          throws SecurityException
        pushLevelを設定します。 LogRecordが内部バッファにコピーされると、そのレベルがpushLevelと等しいかそれよりも大きい場合、pushが呼び出されます。
        パラメータ:
        newLevel - pushLevelの新しい値
        例外:
        SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がLoggingPermission("control")を持っていない場合。
      • getPushLevel

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

        public boolean isLoggable​(LogRecord record)
        このHandlerが、指定されたLogRecordを内部バッファに実際にロギングするかどうかを調べます。

        このメソッドは、LogRecordのレベルが適切かどうか、およびそのレコードが任意のFilterを満足するかどうかをチェックします。 ただし、これは、このLogRecordによってバッファの内容がプッシュされるかどうかはチェックしません LogRecordがnullの場合、これはfalseを返します。

        オーバーライド:
        isLoggable、クラス: Handler
        パラメータ:
        record - LogRecord
        戻り値:
        LogRecordがログをとられる場合はtrue。