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
Handlerclass.(デフォルトなし)
たとえば、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を作成します。 -
メソッドのサマリー
修飾子と型メソッド説明voidclose()Handlerを閉じて、関連するすべてのリソースを解放します。voidflush()ターゲットHandlerをフラッシュします。pushLevelを取得します。booleanisLoggable(LogRecord record) このHandlerが、指定されたLogRecordを内部バッファに実際にロギングするかどうかを調べます。void内部バッファにLogRecordを格納します。voidpush()任意のバッファ処理された出力をターゲットHandlerにプッシュします。voidsetPushLevel(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- プッシュを行うメッセージ・レベル- throws:
IllegalArgumentException-サイズが0以下の場合
-
-
メソッドの詳細
-
publish
public void publish(LogRecord record) 内部バッファにLogRecordを格納します。Filterが存在する場合、そのisLoggableメソッドが呼び出され、指定されたログ・レコードがロギング可能かどうかがチェックされます。 可能でない場合は戻ります。 それ以外の場合、指定されたレコードが内部の循環バッファにコピーされます。 次に、そのレコードのlevelプロパティとpushLevelとが比較されます。 指定されたレベルがpushLevelと等しいかそれよりも大きい場合、pushを呼び出すことで、バッファ内のすべてのレコードがターゲット出力Handlerに書き込まれます。 -
push
public void push()任意のバッファ処理された出力をターゲットHandlerにプッシュします。バッファがクリアされます。
-
flush
public void flush()ターゲットHandlerをフラッシュします。MemoryHandlerバッファの現在の内容は書き出されないことに注意してください。 書き出すにはpushが必要になります。 -
close
public void close() throws SecurityExceptionHandlerを閉じて、関連するすべてのリソースを解放します。 これは、ターゲットHandlerも閉じます。- 定義:
close、クラスHandler- throws:
SecurityException- セキュリティ・マネージャが存在する場合で、呼出し元がLoggingPermission("control")を持っていない場合。
-
setPushLevel
public void setPushLevel(Level newLevel) throws SecurityException pushLevelを設定します。LogRecordが内部バッファにコピーされると、そのレベルがpushLevelと等しいかそれよりも大きい場合、pushが呼び出されます。- パラメータ:
newLevel-pushLevelの新しい値- throws:
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(nullの場合がある)。- 戻り値:
LogRecordがログをとられる場合はtrue。
-