Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. BufferingLogger.php

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\ErrorHandler
View 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

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal