Skip to content

Commit

Permalink
Merge pull request #1049 from spiral/feature/monolog-v3
Browse files Browse the repository at this point in the history
Allow monolog/monolog v3.x
  • Loading branch information
butschster committed Jan 3, 2024
2 parents dcb61c9 + 7d08cac commit e80a852
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 11 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"doctrine/annotations": "^1.12 || ^2.0",
"doctrine/inflector": "^1.4|^2.0",
"league/flysystem": "^2.3.1",
"monolog/monolog": "^2.2",
"monolog/monolog": "^2.9.2 || ^3.5",
"myclabs/deep-copy": "^1.9",
"nette/php-generator": "^4.1.2",
"nikic/php-parser": "^4.15.5",
Expand Down
2 changes: 1 addition & 1 deletion src/Bridge/Monolog/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
],
"require": {
"php": ">=8.1",
"monolog/monolog": "^2.2"
"monolog/monolog": "^2.9.2 || ^3.5"
},
"require-dev": {
"spiral/boot": "^3.12",
Expand Down
3 changes: 2 additions & 1 deletion src/Bridge/Monolog/src/Bootloader/MonologBootloader.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\HandlerInterface;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Level;
use Monolog\Logger;
use Monolog\ResettableInterface;
use Psr\Log\LoggerInterface;
Expand Down Expand Up @@ -90,7 +91,7 @@ public function addHandler(string $channel, HandlerInterface $handler): void

public function logRotate(
string $filename,
int $level = Logger::DEBUG,
int|Level $level = Logger::DEBUG,
int $maxFiles = 0,
bool $bubble = true
): HandlerInterface {
Expand Down
5 changes: 4 additions & 1 deletion src/Bridge/Monolog/src/Config/MonologConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Spiral\Monolog\Config;

use Monolog\Level;
use Monolog\Logger;
use Spiral\Core\Container\Autowire;
use Spiral\Core\InjectableConfig;
Expand All @@ -27,7 +28,9 @@ public function getDefault(): string

public function getEventLevel(): int
{
return $this->config['globalLevel'] ?? Logger::DEBUG;
$level = $this->config['globalLevel'] ?? Logger::DEBUG;

return $level instanceof Level ? $level->value : $level;
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/Bridge/Monolog/src/EventHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use Monolog\Handler\AbstractHandler;
use Monolog\Logger;
use Monolog\LogRecord;
use Spiral\Logger\Event\LogEvent;
use Spiral\Logger\ListenerRegistryInterface;

Expand All @@ -19,7 +20,7 @@ public function __construct(
parent::__construct($level, $bubble);
}

public function handle(array $record): bool
public function handle(array|LogRecord $record): bool
{
$e = new LogEvent(
$record['datetime'],
Expand Down
2 changes: 1 addition & 1 deletion src/Bridge/Monolog/tests/FactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class FactoryTest extends BaseTestCase

public function testDefaultLogger(): void
{
$factory = new LogFactory(new MonologConfig([]), new ListenerRegistry(),$this->container);
$factory = new LogFactory(new MonologConfig([]), new ListenerRegistry(), $this->container);
$logger = $factory->getLogger();

$this->assertNotEmpty($logger);
Expand Down
14 changes: 12 additions & 2 deletions src/Bridge/Monolog/tests/HandlersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
namespace Spiral\Tests\Monolog;

use Monolog\Handler\NullHandler;
use Monolog\Level;
use Monolog\Logger;
use Monolog\LogRecord;
use Spiral\Boot\BootloadManager\StrategyBasedBootloadManager;
use Spiral\Boot\FinalizerInterface;
use Spiral\Config\ConfigManager;
Expand Down Expand Up @@ -152,12 +154,20 @@ public function testConstructWithOptionsHandler(): void

$this->assertCount(2, $logger->getHandlers());
$this->assertInstanceOf(NullHandler::class, $logger->getHandlers()[0]);
$this->assertFalse($logger->getHandlers()[0]->isHandling(['level' => Logger::DEBUG]));
$this->assertTrue($logger->getHandlers()[0]->isHandling(['level' => Logger::CRITICAL]));

$this->assertFalse($logger->getHandlers()[0]->isHandling($this->createLogRecord(Logger::DEBUG)));
$this->assertTrue($logger->getHandlers()[0]->isHandling($this->createLogRecord(Logger::CRITICAL)));
}

protected function getLogger(): Logger
{
return $this->container->get(LogsInterface::class)->getLogger('test');
}

protected function createLogRecord(int $level): array|LogRecord
{
return Logger::API === 2
? ['level' => $level]
: new LogRecord(new \DateTimeImmutable(), 'test', Level::from($level), 'test');
}
}
7 changes: 5 additions & 2 deletions src/Bridge/Monolog/tests/RotateHandlerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Spiral\Tests\Monolog;

use Monolog\Handler\RotatingFileHandler;
use Monolog\Level;
use Monolog\Logger;
use Spiral\Boot\BootloadManager\DefaultInvokerStrategy;
use Spiral\Boot\BootloadManager\Initializer;
Expand Down Expand Up @@ -58,7 +59,8 @@ public function load(string $section): array
$handler = $autowire->resolve($this->container);
$this->assertInstanceOf(RotatingFileHandler::class, $handler);

$this->assertSame(Logger::DEBUG, $handler->getLevel());
$level = $handler->getLevel();
$this->assertSame(Logger::DEBUG, $level instanceof Level ? $level->value : $level);
$this->assertTrue($handler->getBubble());
}

Expand All @@ -79,7 +81,8 @@ public function testChangeFormat(): void
$handler = $autowire->resolve($this->container);
$this->assertInstanceOf(RotatingFileHandler::class, $handler);

$this->assertSame(Logger::DEBUG, $handler->getLevel());
$level = $handler->getLevel();
$this->assertSame(Logger::DEBUG, $level instanceof Level ? $level->value : $level);

$formatter = $handler->getFormatter();
$this->assertSame('foo', (new \ReflectionProperty($formatter, 'format'))->getValue($formatter));
Expand Down
7 changes: 6 additions & 1 deletion src/Telemetry/src/Monolog/TelemetryProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Spiral\Telemetry\Monolog;

use Monolog\LogRecord;
use Monolog\Processor\ProcessorInterface;
use Psr\Container\ContainerInterface;
use Spiral\Telemetry\TracerInterface;
Expand All @@ -15,8 +16,12 @@ public function __construct(
) {
}

public function __invoke(array $record): array
public function __invoke(LogRecord|array $record): array
{
if ($record instanceof LogRecord) {
$record = $record->toArray();
}

$tracer = $this->container->get(TracerInterface::class);
\assert($tracer instanceof TracerInterface);

Expand Down

0 comments on commit e80a852

Please sign in to comment.