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
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
$bubble
protected
bool
$bubble
= true
$buffer
protected
array<string|int, Record>
$buffer
= []
$bufferLimit
protected
int
$bufferLimit
$bufferSize
protected
int
$bufferSize
= 0
$deduplicationLevel
protected
Level
$deduplicationLevel
$deduplicationStore
protected
string
$deduplicationStore
$flushOnOverflow
protected
bool
$flushOnOverflow
$handler
protected
HandlerInterface
$handler
$initialized
protected
bool
$initialized
= false
$level
protected
int
$level
= MonologLogger::DEBUG
Tags
$processors
protected
array<string|int, callable>
$processors
= []
Tags
$time
protected
int
$time
$gc
private
bool
$gc
= false
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
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 —flush()
public
flush() : 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.
getFormatter()
Gets the formatter.
public
getFormatter() : FormatterInterface
Return values
FormatterInterface —getLevel()
Gets minimum logging level at which this handler will be triggered.
public
getLevel() : int
Tags
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 —popProcessor()
{@inheritDoc}
public
popProcessor() : callable
Return values
callable —pushProcessor()
{@inheritDoc}
public
pushProcessor(callable $callback) : HandlerInterface
Parameters
- $callback : callable
Return values
HandlerInterface —reset()
public
reset() : void
Return values
void —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 —setFormatter()
Sets the formatter.
public
setFormatter(FormatterInterface $formatter) : HandlerInterface
Parameters
- $formatter : FormatterInterface
Return values
HandlerInterface —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
Return values
array<string|int, mixed> —resetProcessors()
protected
resetProcessors() : void
Return values
void —appendRecord()
private
appendRecord(array<string|int, mixed> $record) : void
Parameters
- $record : array<string|int, mixed>
Tags
Return values
void —collectLogs()
private
collectLogs() : void
Return values
void —isDuplicate()
private
isDuplicate(array<string|int, mixed> $record) : bool
Parameters
- $record : array<string|int, mixed>