class BufferingLogger
A buffering logger that stacks logs for later.
@author Nicolas Grekas <p@tchwork.com>
Hierarchy
- class \Psr\Log\AbstractLogger implements \Psr\Log\LoggerInterface uses \Psr\Log\LoggerTrait
- class \Symfony\Component\ErrorHandler\BufferingLogger extends \Psr\Log\AbstractLogger
Expanded class hierarchy of BufferingLogger
File
-
vendor/
symfony/ error-handler/ BufferingLogger.php, line 21
Namespace
Symfony\Component\ErrorHandlerView source
class BufferingLogger extends AbstractLogger {
private array $logs = [];
public function log($level, $message, array $context = []) : void {
$this->logs[] = [
$level,
$message,
$context,
];
}
public function cleanLogs() : array {
$logs = $this->logs;
$this->logs = [];
return $logs;
}
public function __sleep() : array {
throw new \BadMethodCallException('Cannot serialize ' . __CLASS__);
}
public function __wakeup() : void {
throw new \BadMethodCallException('Cannot unserialize ' . __CLASS__);
}
public function __destruct() {
foreach ($this->logs as [
$level,
$message,
$context,
]) {
if (str_contains($message, '{')) {
foreach ($context as $key => $val) {
if (null === $val || \is_scalar($val) || $val instanceof \Stringable) {
$message = str_replace("{{$key}}", $val, $message);
}
elseif ($val instanceof \DateTimeInterface) {
$message = str_replace("{{$key}}", $val->format(\DateTimeInterface::RFC3339), $message);
}
elseif (\is_object($val)) {
$message = str_replace("{{$key}}", '[object ' . get_debug_type($val) . ']', $message);
}
else {
$message = str_replace("{{$key}}", '[' . \gettype($val) . ']', $message);
}
}
}
error_log(\sprintf('%s [%s] %s', date(\DateTimeInterface::RFC3339), $level, $message));
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
BufferingLogger::$logs | private | property | |
BufferingLogger::cleanLogs | public | function | |
BufferingLogger::log | public | function | |
BufferingLogger::__destruct | public | function | |
BufferingLogger::__sleep | public | function | |
BufferingLogger::__wakeup | public | function |