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:
  `Closeable`, `Flushable`, `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.

Author:
  David M. Lloyd

## Field Summary

### 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

Modifier and Type
Method
Description
`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.
`String[]`
`getQueueAsStrings()`
Get a copy of the queue, rendering each record as a string.
`void`
`publish(LogRecord record)`
`void`
`publish(ExtLogRecord record)`
Publish an `ExtLogRecord`.
`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, isCallerCalculationRequired, isCloseChildren, isEnabled, protect, removeHandler, setAutoFlush, setCloseChildren, setEnabled, setEncoding, setErrorManager, setFilter, setFormatter, setHandlers, setLevel, unprotect`

### Methods inherited from class java.util.logging.Handler

`getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### QueueHandler

public QueueHandler()
Construct a new instance with a default queue length.

### QueueHandler

public QueueHandler(int limit)
Construct a new instance.

Parameters:
  `limit` - the queue length to use

## Method Details

### publish

public void publish(ExtLogRecord record)
Description copied from class: `ExtHandler`
Publish an `ExtLogRecord`.

The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here.

The `ExtHandler` is responsible for formatting the message, when and if necessary. The formatting should include localization.

Overrides:
  `publish` in class `ExtHandler`
Parameters:
  `record` - the log record to publish

### publish

public void publish(LogRecord record)
Description copied from class: `ExtHandler`

Overrides:
  `publish` in class `ExtHandler`

### 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 the `autoFlush` property is set to `true`; 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 class `ExtHandler`
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 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.