63 lines
1.5 KiB
PHP
63 lines
1.5 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;
|
|
|
|
|
|
/**
|
|
* Psr\Log\LoggerInterface to Tracy\ILogger adapter.
|
|
*/
|
|
class PsrToTracyLoggerAdapter implements Tracy\ILogger
|
|
{
|
|
/** Tracy logger level to PSR-3 log level mapping */
|
|
private const LevelMap = [
|
|
Tracy\ILogger::DEBUG => Psr\Log\LogLevel::DEBUG,
|
|
Tracy\ILogger::INFO => Psr\Log\LogLevel::INFO,
|
|
Tracy\ILogger::WARNING => Psr\Log\LogLevel::WARNING,
|
|
Tracy\ILogger::ERROR => Psr\Log\LogLevel::ERROR,
|
|
Tracy\ILogger::EXCEPTION => Psr\Log\LogLevel::ERROR,
|
|
Tracy\ILogger::CRITICAL => Psr\Log\LogLevel::CRITICAL,
|
|
];
|
|
|
|
/** @var Psr\Log\LoggerInterface */
|
|
private $psrLogger;
|
|
|
|
|
|
public function __construct(Psr\Log\LoggerInterface $psrLogger)
|
|
{
|
|
$this->psrLogger = $psrLogger;
|
|
}
|
|
|
|
|
|
public function log($value, $level = self::INFO)
|
|
{
|
|
if ($value instanceof \Throwable) {
|
|
$message = Tracy\Helpers::getClass($value) . ': ' . $value->getMessage() . ($value->getCode() ? ' #' . $value->getCode() : '') . ' in ' . $value->getFile() . ':' . $value->getLine();
|
|
$context = ['exception' => $value];
|
|
|
|
} elseif (!is_string($value)) {
|
|
$message = trim(Tracy\Dumper::toText($value));
|
|
$context = [];
|
|
|
|
} else {
|
|
$message = $value;
|
|
$context = [];
|
|
}
|
|
|
|
$this->psrLogger->log(
|
|
self::LevelMap[$level] ?? Psr\Log\LogLevel::ERROR,
|
|
$message,
|
|
$context
|
|
);
|
|
}
|
|
}
|