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.

Author:
  David M. Lloyd

### Field Summary

### Fields inherited from class org.jboss.logmanager.ExtHandler

`handlers, handlersUpdater`

### Constructor Summary

Constructors
`QueueHandler()` Construct a new instance with a default queue length.
`QueueHandler​(int limit)` Construct a new instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`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 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 Detail

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

#### 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​(java.util.logging.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 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.