Observium_CE/libs/Nette/Bridges/Psr/TracyToPsrLoggerAdapter.php

62 lines
1.4 KiB
PHP

<?php
/**
* This file is part of the Tracy (https://tracy.nette.org)
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare(strict_types=1);
namespace Tracy\Bridges\Psr;
use Psr;
use Tracy;
/**
* Tracy\ILogger to Psr\Log\LoggerInterface adapter.
*/
class TracyToPsrLoggerAdapter extends Psr\Log\AbstractLogger
{
/** PSR-3 log level to Tracy logger level mapping */
private const LevelMap = [
Psr\Log\LogLevel::EMERGENCY => Tracy\ILogger::CRITICAL,
Psr\Log\LogLevel::ALERT => Tracy\ILogger::CRITICAL,
Psr\Log\LogLevel::CRITICAL => Tracy\ILogger::CRITICAL,
Psr\Log\LogLevel::ERROR => Tracy\ILogger::ERROR,
Psr\Log\LogLevel::WARNING => Tracy\ILogger::WARNING,
Psr\Log\LogLevel::NOTICE => Tracy\ILogger::WARNING,
Psr\Log\LogLevel::INFO => Tracy\ILogger::INFO,
Psr\Log\LogLevel::DEBUG => Tracy\ILogger::DEBUG,
];
/** @var Tracy\ILogger */
private $tracyLogger;
public function __construct(Tracy\ILogger $tracyLogger)
{
$this->tracyLogger = $tracyLogger;
}
public function log($level, $message, array $context = []): void
{
$level = self::LevelMap[$level] ?? Tracy\ILogger::ERROR;
if (isset($context['exception']) && $context['exception'] instanceof \Throwable) {
$this->tracyLogger->log($context['exception'], $level);
unset($context['exception']);
}
if ($context) {
$message = [
'message' => $message,
'context' => $context,
];
}
$this->tracyLogger->log($message, $level);
}
}