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

Breadcrumb

  1. Drupal Core 11.1.x

SimplePsrFileLogger.php

Namespace

OpenTelemetry\SDK\Logs

File

vendor/open-telemetry/sdk/Logs/SimplePsrFileLogger.php

View source
<?php

declare (strict_types=1);
namespace OpenTelemetry\SDK\Logs;

use Psr\Log\InvalidArgumentException;
use Psr\Log\LoggerInterface;
use Psr\Log\LoggerTrait;
use Psr\Log\LogLevel;
use ReflectionClass;
use Throwable;
class SimplePsrFileLogger implements LoggerInterface {
    use LoggerTrait;
    private const DEFAULT_LOGGER_NAME = 'otel';
    private static ?array $logLevels = null;
    public function __construct(string $filename, string $loggerName = self::DEFAULT_LOGGER_NAME) {
    }
    
    /**
     * @psalm-suppress MoreSpecificImplementedParamType
     */
    public function log($level, $message, array $context = []) : void {
        $level = strtolower((string) $level);
        if (!in_array($level, self::getLogLevels(), true)) {
            throw new InvalidArgumentException(sprintf('Invalid Log level: "%s"', $level));
        }
        file_put_contents($this->filename, $this->formatLog((string) $level, (string) $message, $context), FILE_APPEND);
    }
    
    /**
     * @return string
     */
    private function formatLog(string $level, string $message, array $context = []) : string {
        try {
            $encodedContext = json_encode($context, JSON_THROW_ON_ERROR);
        } catch (Throwable $t) {
            $encodedContext = sprintf('(Could not encode context: %s)', $t->getMessage());
        }
        return sprintf('[%s] %s %s: %s %s%s', date(DATE_RFC3339_EXTENDED), $this->loggerName, $level, $message, $encodedContext, PHP_EOL);
    }
    
    /**
     * @return array
     */
    private static function getLogLevels() : array {
        return self::$logLevels ?? (self::$logLevels = (new ReflectionClass(LogLevel::class))->getConstants());
    }

}

Classes

Title Deprecated Summary
SimplePsrFileLogger

API Navigation

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