- java.lang.Object
-
- java.util.logging.Handler
-
- 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()
MemoryHandler
を作成してLogManager
の構成プロパティに基づき構成します。MemoryHandler(Handler target, int size, Level pushLevel)
MemoryHandler
を作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 void
close()
Handler
を閉じて、関連するすべてのリソースを解放します。void
flush()
ターゲットHandler
をフラッシュします。Level
getPushLevel()
pushLevel
を取得します。boolean
isLoggable(LogRecord record)
このHandler
が、指定されたLogRecord
を内部バッファに実際にロギングするかどうかを調べます。void
publish(LogRecord record)
内部バッファに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
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
に書き込まれます。
-
push
public void push()
任意のバッファ処理された出力をターゲットHandler
にプッシュします。バッファがクリアされます。
-
flush
public void flush()
ターゲットHandler
をフラッシュします。MemoryHandler
バッファの現在の内容は書き出されないことに注意してください。 書き出すにはpushが必要になります。
-
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。
-
-