Simple handler wrapper that deduplicates log records across multiple requests

It also includes the BufferHandler functionality and will buffer
all messages until the end of the request or flush() is called.

This works by storing all log records' messages above $deduplicationLevel
to the file specified by $deduplicationStore. When further logs come in at the end of the
request (or when flush() is called), all those above $deduplicationLevel are checked
against the existing stored logs. If they match and the timestamps in the stored log is
not older than $time seconds, the new log record is discarded. If no log record is new, the
whole data set is discarded.

This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers
that send messages to people, to avoid spamming with the same message over and over in case of
a major component failure like a database server being down which makes all requests fail in the
same way.

CloneableInstantiable
ExtendsMonolog\Handler\BufferHandler
Monolog\Handler\AbstractHandler
Monolog\Handler\Handler
ImplementsMonolog\Handler\FormattableHandlerInterface
Monolog\Handler\HandlerInterface
Monolog\Handler\ProcessableHandlerInterface
Monolog\ResettableInterface
Methods
public __construct(Monolog\Handler\HandlerInterface $handler, ?string $deduplicationStore = NULL, $deduplicationLevel = 400, int $time = 60, bool $bubble = true)
 


    public Monolog\Handler\BufferHandler::__destruct()
    public Monolog\Handler\Handler::__sleep()
    public Monolog\Handler\BufferHandler::clear() : void
     
    Clears the buffer without flushing any messages down to the wrapped handler.

    public Monolog\Handler\BufferHandler::close() : void
     
    {@inheritdoc}

    public flush() : void
    public Monolog\Handler\AbstractHandler::getBubble() : bool
     
    Gets the bubbling behavior.

    • return bool true means that this handler allows bubbling. false means that bubbling is not permitted.
    public Monolog\Handler\BufferHandler::getFormatter() : Monolog\Formatter\FormatterInterface
     
    {@inheritdoc}

    public Monolog\Handler\AbstractHandler::getLevel() : int
     
    Gets minimum logging level at which this handler will be triggered.

    • return int
    public Monolog\Handler\BufferHandler::handle(array $record) : bool
     
    {@inheritdoc}

    public Monolog\Handler\Handler::handleBatch(array $records) : void
     
    {@inheritdoc}

    public Monolog\Handler\AbstractHandler::isHandling(array $record) : bool
     
    {@inheritdoc}

    public Monolog\Handler\BufferHandler::popProcessor() : callable
     
    {@inheritdoc}

    public Monolog\Handler\BufferHandler::pushProcessor(callable $callback) : Monolog\Handler\HandlerInterface
     
    {@inheritdoc}

    • suppress PhanTypeMismatchReturn
    public Monolog\Handler\BufferHandler::reset()
    public Monolog\Handler\AbstractHandler::setBubble(bool $bubble) : self
     
    Sets the bubbling behavior.

    • return self
    public Monolog\Handler\BufferHandler::setFormatter(Monolog\Formatter\FormatterInterface $formatter) : Monolog\Handler\HandlerInterface
     
    {@inheritdoc}

    public Monolog\Handler\AbstractHandler::setLevel( $level) : self
     
    Sets minimum logging level at which this handler will be triggered.

    • return self
    Properties
    protected Monolog\Handler\AbstractHandler::$bubble
    protected Monolog\Handler\BufferHandler::$buffer
    protected Monolog\Handler\BufferHandler::$bufferLimit
    protected Monolog\Handler\BufferHandler::$bufferSize
    protected $deduplicationLevel
     


    • var int
    protected $deduplicationStore
     


    • var string
    protected Monolog\Handler\BufferHandler::$flushOnOverflow
    protected Monolog\Handler\BufferHandler::$handler
    protected Monolog\Handler\BufferHandler::$initialized
    protected Monolog\Handler\AbstractHandler::$level
    protected Monolog\Handler\BufferHandler::$processors
     


    • var callable[]
    protected $time
     


    • var int
    Methods
    protected Monolog\Handler\BufferHandler::processRecord(array $record) : array
     
    Processes a record.

    protected Monolog\Handler\BufferHandler::resetProcessors() : void
    Properties
    private $gc
     


    • var bool
    Methods
    private appendRecord(array $record) : void
    private collectLogs() : void
    private isDuplicate(array $record) : bool
    © 2020 Bruce Wells
    Search Namespaces \ Classes
    ConfigurationNumbers (0-9.) only