Build 1.0_r1(from source)

java.util.logging
Class MemoryHandler

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

public class MemoryHandler
extends Handler

A Handler put the description of log events into a cycled memory buffer.

Mostly this MemoryHandler just puts the given LogRecord into the internal buffer and doesn't perform any formatting or any other process. When the buffer is full, the earliest buffered records will be discarded.

Every MemoryHandler has a target handler, and push action can be triggered so that all buffered records will be output to the target handler and normally the latter will publish the records. After the push action, the buffer will be cleared.

The push action can be triggered in three ways:

MemoryHandler will read following LogManager properties for initialization, if given properties are not defined or has invalid values, default value will be used.


Constructor Summary
MemoryHandler()
          Default constructor, construct and init a MemoryHandler using LogManager properties or default values
MemoryHandler(Handler target, int size, Level pushLevel)
          Construct and init a MemoryHandler using given target, size and push level, other properties using LogManager properties or default values
 
Method Summary
 void close()
          Close this handler and target handler, free all associated resources
 void flush()
          Call target handler to flush any buffered output.
 Level getPushLevel()
          Return the push level.
 boolean isLoggable(LogRecord record)
          Check if given LogRecord would be put into this MemoryHandler's internal buffer.
 void publish(LogRecord record)
          Put a given LogRecord into internal buffer.
 void push()
          Triggers a push action to output all buffered records to the target handler, and the target handler will publish them.
 void setPushLevel(Level newLevel)
          Set the push level.
 
Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, initProperties, internalSetEncoding, internalSetFormatter, printInvalidPropMessage, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MemoryHandler

public MemoryHandler()
Default constructor, construct and init a MemoryHandler using LogManager properties or default values


MemoryHandler

public MemoryHandler(Handler target,
                     int size,
                     Level pushLevel)
Construct and init a MemoryHandler using given target, size and push level, other properties using LogManager properties or default values

Parameters:
target - the given Handler to output
size - the maximum number of buffered LogRecord
pushLevel - the push level
Throws:
IllegalArgumentException - if size<=0
Method Detail

close

public void close()
Close this handler and target handler, free all associated resources

Specified by:
close in class Handler
Throws:
SecurityException - if security manager exists and it determines that caller does not have the required permissions to control this handler

flush

public void flush()
Call target handler to flush any buffered output. Note that this doesn't cause this MemoryHandler to push.

Specified by:
flush in class Handler

publish

public void publish(LogRecord record)
Put a given LogRecord into internal buffer. If given record is not loggable, just return. Otherwise it is stored in the buffer. Furthermore if the record's level is not less than the push level, the push action is triggered to output all the buffered records to the target handler, and the target handler will publish them.

Specified by:
publish in class Handler
Parameters:
record - the log record.

getPushLevel

public Level getPushLevel()
Return the push level.

Returns:
the push level

isLoggable

public boolean isLoggable(LogRecord record)

Check if given LogRecord would be put into this MemoryHandler's internal buffer.

The given LogRecord is loggable if and only if it has appropriate level and it pass any associated filter's check.

Note that the push level is not used for this check.

Overrides:
isLoggable in class Handler
Parameters:
record - the given LogRecord
Returns:
if the given LogRecord should be logged

push

public void push()
Triggers a push action to output all buffered records to the target handler, and the target handler will publish them. Then the buffer is cleared.


setPushLevel

public void setPushLevel(Level newLevel)
Set the push level. The push level is used to check the push action triggering. When a new LogRecord is put into the internal buffer and its level is not less than the push level, the push action will be triggered. Note that set new push level won't trigger push action.

Parameters:
newLevel - the new level to set
Throws:
SecurityException - if security manager exists and it determines that caller does not have the required permissions to control this handler

Build 1.0_r1(from source)

Please submit a feedback, bug or feature