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
close()
Handler
を閉じて、関連するすべてのリソースを解放します。void
flush()
ターゲットHandler
でフラッシュします。pushLevel
を取得します。boolean
isLoggable
(LogRecord record) このHandler
が特定のLogRecord
を内部バッファに実際にログに記録するかどうかを確認します。void
内部バッファにLogRecord
を格納します。void
push()
バッファされた出力をターゲットHandler
にプッシュします。void
setPushLevel
(Level newLevel) pushLevel
を設定します。クラスjava.util.logging.Handlerで宣言されたメソッド
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
-
コンストラクタの詳細
-
MemoryHandler
public MemoryHandler()MemoryHandler
を作成し、LogManager
構成プロパティに基づいて構成します。 -
MemoryHandler
MemoryHandler
を作成します。MemoryHandler
は、指定されたpushLevel
引数およびバッファ・サイズ引数が使用されることを除き、LogManager
プロパティ(またはデフォルト値)に基づいて構成されます。- パラメータ:
target
- 出力を通知するHandler。size
- バッファ処理するログ・レコードの数(ゼロより大きくなければならない)pushLevel
- プッシュを行うメッセージ・レベル- 例外:
IllegalArgumentException
-サイズが0以下
の場合
-
-
メソッドの詳細
-
publish
public void publish(LogRecord record) 内部バッファにLogRecord
を格納します。Filter
がある場合、指定されたログ・レコードがloggableかどうかを確認するために、そのisLoggable
メソッドがコールされます。 可能でない場合は戻ります。 それ以外の場合、指定されたレコードが内部の循環バッファにコピーされます。 次に、レコードのレベル・プロパティがpushLevel
と比較されます。 指定されたレベルがpushLevel
以上の場合、push
がコールされ、バッファされたすべてのレコードがターゲット出力Handler
に書き込まれます。 -
push
public void push()バッファされた出力をターゲットHandler
にプッシュします。バッファがクリアされます。
-
flush
-
close
public void close() throws SecurityExceptionHandler
を閉じて、関連するすべてのリソースを解放します。 これにより、ターゲットHandler
もクローズされます。- 定義:
close
、クラスHandler
- 例外:
SecurityException
- セキュリティ・マネージャが存在し、コール元にLoggingPermission("control")
がない場合。
-
setPushLevel
public void setPushLevel(Level newLevel) throws SecurityException pushLevel
を設定します。LogRecord
が内部バッファにコピーされた後、そのレベルがpushLevel
以上の場合は、push
がコールされます。- パラメータ:
newLevel
-pushLevel
の新しい値- 例外:
SecurityException
- セキュリティ・マネージャが存在し、コール元にLoggingPermission("control")
がない場合。
-
getPushLevel
-
isLoggable
public boolean isLoggable(LogRecord record) このHandler
が特定のLogRecord
を内部バッファに実際にログに記録するかどうかを確認します。このメソッドは、
LogRecord
に適切なレベルがあるかどうか、およびFilter
を満たすかどうかをチェックします。 ただし、LogRecord
がバッファ・コンテンツの"push"になるかどうかはチェックされません。LogRecord
がnullの場合、falseが返されます。- オーバーライド:
isLoggable
、クラスHandler
- パラメータ:
record
-LogRecord
(nullの場合がある)。- 戻り値:
LogRecord
がログに記録される場合はtrue。
-