Class QueueHandler

  • All Implemented Interfaces:
    Flushable, AutoCloseable

    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
    • 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
      • 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
      • addHandler

        public void addHandler​(Handler handler)
                        throws SecurityException
        Description copied from class: ExtHandler
        Add a sub-handler to this handler. Some handler types do not utilize sub-handlers.
        Overrides:
        addHandler in class ExtHandler
        Parameters:
        handler - the handler to add
        Throws:
        SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control)
      • addHandler

        public void addHandler​(Handler handler,
                               boolean replay)
                        throws SecurityException
        Add the given handler, optionally atomically replaying the queue, allowing the delegate handler to receive all queued messages as well as all subsequent messages with no loss or reorder in between.
        Parameters:
        handler - the handler to add (must not be null)
        replay - true to replay the prior messages, or false to add the handler without replaying
        Throws:
        SecurityException - if the handler was not allowed to be added
      • 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.