Documentation

DeduplicationHandler extends BufferHandler
in package

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.

Tags
author

Jordi Boggiano j.boggiano@seld.be

phpstan-import-type

Record from \Monolog\Logger

phpstan-import-type

LevelName from \Monolog\Logger

phpstan-import-type

Level from \Monolog\Logger

Table of Contents

$bubble  : bool
$buffer  : array<string|int, Record>
$bufferLimit  : int
$bufferSize  : int
$deduplicationLevel  : Level
$deduplicationStore  : string
$flushOnOverflow  : bool
$handler  : HandlerInterface
$initialized  : bool
$level  : int
$processors  : array<string|int, callable>
$time  : int
$gc  : bool
__construct()  : mixed
__destruct()  : mixed
__sleep()  : mixed
clear()  : void
Clears the buffer without flushing any messages down to the wrapped handler.
close()  : void
Closes the handler.
flush()  : void
getBubble()  : bool
Gets the bubbling behavior.
getFormatter()  : FormatterInterface
Gets the formatter.
getLevel()  : int
Gets minimum logging level at which this handler will be triggered.
handle()  : bool
{@inheritDoc}
handleBatch()  : void
Handles a set of records at once.
isHandling()  : bool
{@inheritDoc}
popProcessor()  : callable
{@inheritDoc}
pushProcessor()  : HandlerInterface
{@inheritDoc}
reset()  : void
setBubble()  : self
Sets the bubbling behavior.
setFormatter()  : HandlerInterface
Sets the formatter.
setLevel()  : self
Sets minimum logging level at which this handler will be triggered.
processRecord()  : array<string|int, mixed>
Processes a record.
resetProcessors()  : void
appendRecord()  : void
collectLogs()  : void
isDuplicate()  : bool

Properties

$level

protected int $level = MonologLogger::DEBUG
Tags
phpstan-var

Level

$processors

protected array<string|int, callable> $processors = []
Tags
phpstan-var

array<ProcessorInterface|callable(Record): Record>

Methods

__construct()

public __construct(HandlerInterface $handler[, string $deduplicationStore = null ][, string|int $deduplicationLevel = Logger::ERROR ][, int $time = 60 ][, bool $bubble = true ]) : mixed
Parameters
$handler : HandlerInterface

Handler.

$deduplicationStore : string = null

The file/path where the deduplication log should be kept

$deduplicationLevel : string|int = Logger::ERROR

The minimum logging level for log records to be looked at for deduplication purposes

$time : int = 60

The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through

$bubble : bool = true

Whether the messages that are handled can bubble up the stack or not

Tags
phpstan-param

Level|LevelName|LogLevel::* $deduplicationLevel

Return values
mixed

__destruct()

public __destruct() : mixed
Return values
mixed

__sleep()

public __sleep() : mixed
Return values
mixed

clear()

Clears the buffer without flushing any messages down to the wrapped handler.

public clear() : void
Return values
void

close()

Closes the handler.

public close() : void
Return values
void

getBubble()

Gets the bubbling behavior.

public getBubble() : bool
Return values
bool

true means that this handler allows bubbling. false means that bubbling is not permitted.

getLevel()

Gets minimum logging level at which this handler will be triggered.

public getLevel() : int
Tags
phpstan-return

Level

Return values
int

handle()

{@inheritDoc}

public handle(array<string|int, mixed> $record) : bool
Parameters
$record : array<string|int, mixed>
Return values
bool

handleBatch()

Handles a set of records at once.

public handleBatch(array<string|int, mixed> $records) : void
Parameters
$records : array<string|int, mixed>

The records to handle (an array of record arrays)

Return values
void

isHandling()

{@inheritDoc}

public isHandling(array<string|int, mixed> $record) : bool
Parameters
$record : array<string|int, mixed>
Return values
bool

setBubble()

Sets the bubbling behavior.

public setBubble(bool $bubble) : self
Parameters
$bubble : bool

true means that this handler allows bubbling. false means that bubbling is not permitted.

Return values
self

setLevel()

Sets minimum logging level at which this handler will be triggered.

public setLevel(Level|LevelName|\Psr\Log\LogLevel::* $level) : self
Parameters
$level : Level|LevelName|\Psr\Log\LogLevel::*

Level or level name

Return values
self

processRecord()

Processes a record.

protected processRecord(array<string|int, mixed> $record) : array<string|int, mixed>
Parameters
$record : array<string|int, mixed>
Tags
phpstan-param

Record $record

phpstan-return

Record

Return values
array<string|int, mixed>

appendRecord()

private appendRecord(array<string|int, mixed> $record) : void
Parameters
$record : array<string|int, mixed>
Tags
phpstan-param

Record $record

Return values
void

isDuplicate()

private isDuplicate(array<string|int, mixed> $record) : bool
Parameters
$record : array<string|int, mixed>
Tags
phpstan-param

Record $record

Return values
bool

Search results