Package org.jboss.logmanager.handlers
Class QueueHandler
- java.lang.Object
-
- java.util.logging.Handler
-
- org.jboss.logmanager.ExtHandler
-
- org.jboss.logmanager.handlers.QueueHandler
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
,FlushableCloseable
,Protectable
public class QueueHandler extends ExtHandler
A queue handler which retains the last few messages logged. The handler can be used as-is to remember recent messages, or one or more handlers may be nested, which allows this handler to "replay" messages to the child handler(s) upon request.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Deque<ExtLogRecord>
buffer
private int
limit
-
Fields inherited from class org.jboss.logmanager.ExtHandler
handlers, handlersUpdater
-
-
Constructor Summary
Constructors Constructor Description QueueHandler()
Construct a new instance with a default queue length.QueueHandler(int limit)
Construct a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.IllegalArgumentException
badQueueLength()
protected void
doPublish(ExtLogRecord record)
Do the actual work of publication; the record will have been filtered already.int
getLimit()
Get the queue length limit.ExtLogRecord[]
getQueue()
Get a copy of the queue as it is at an exact moment in time.java.lang.String[]
getQueueAsStrings()
Get a copy of the queue, rendering each record as a string.void
publish(java.util.logging.LogRecord record)
void
publish(ExtLogRecord record)
Publish anExtLogRecord
.void
replay()
Replay the stored queue to the nested handlers.void
setLimit(int limit)
Set the queue length limit.-
Methods inherited from class org.jboss.logmanager.ExtHandler
addHandler, checkAccess, checkAccess, clearHandlers, close, disableAccess, enableAccess, flush, getHandlers, isAutoFlush, isEnabled, protect, removeHandler, setAutoFlush, setEnabled, setEncoding, setErrorManager, setFilter, setFormatter, setHandlers, setLevel, unprotect
-
-
-
-
Field Detail
-
buffer
private final java.util.Deque<ExtLogRecord> buffer
-
limit
private int limit
-
-
Method Detail
-
publish
public void publish(ExtLogRecord record)
Description copied from class:ExtHandler
Publish anExtLogRecord
. The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here. TheExtHandler
is responsible for formatting the message, when and if necessary. The formatting should include localization.- Overrides:
publish
in classExtHandler
- Parameters:
record
- the log record to publish
-
publish
public void publish(java.util.logging.LogRecord record)
Description copied from class:ExtHandler
- Overrides:
publish
in classExtHandler
-
doPublish
protected void doPublish(ExtLogRecord record)
Description copied from class:ExtHandler
Do the actual work of publication; the record will have been filtered already. The default implementation does nothing except to flush if theautoFlush
property is set totrue
; if this behavior is to be preserved in a subclass then this method should be called after the record is physically written.- Overrides:
doPublish
in classExtHandler
- Parameters:
record
- the log record to publish
-
getLimit
public int getLimit()
Get the queue length limit. This is the number of messages that will be saved before old messages roll off of the queue.- Returns:
- the queue length limit
-
setLimit
public void setLimit(int limit)
Set the queue length limit. This is the number of messages that will be saved before old messages roll off of the queue.- Parameters:
limit
- the queue length limit
-
getQueue
public ExtLogRecord[] getQueue()
Get a copy of the queue as it is at an exact moment in time.- Returns:
- the copy of the queue
-
getQueueAsStrings
public java.lang.String[] getQueueAsStrings()
Get a copy of the queue, rendering each record as a string.- Returns:
- the copy of the queue rendered as strings
-
replay
public void replay()
Replay the stored queue to the nested handlers.
-
badQueueLength
private static java.lang.IllegalArgumentException badQueueLength()
-
-