Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7e81ede

Browse filesBrowse files
committed
[MonologBridge] Add support for Monolog 3
1 parent 6bc0882 commit 7e81ede
Copy full SHA for 7e81ede
Expand file treeCollapse file tree

24 files changed

+175
-146
lines changed

‎src/Symfony/Bridge/Monolog/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/CHANGELOG.md
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
6.1
5+
---
6+
7+
* Added support for Monolog 3.
8+
49
6.0
510
---
611

‎src/Symfony/Bridge/Monolog/Formatter/ConsoleFormatter.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Formatter/ConsoleFormatter.php
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Monolog\Formatter\FormatterInterface;
1515
use Monolog\Logger;
16+
use Monolog\LogRecord;
1617
use Symfony\Component\Console\Formatter\OutputFormatter;
1718
use Symfony\Component\VarDumper\Cloner\Data;
1819
use Symfony\Component\VarDumper\Cloner\Stub;
@@ -101,8 +102,11 @@ public function formatBatch(array $records): mixed
101102
/**
102103
* {@inheritdoc}
103104
*/
104-
public function format(array $record): mixed
105+
public function format(array|LogRecord $record): mixed
105106
{
107+
if ($record instanceof LogRecord) {
108+
$record = $record->toArray();
109+
}
106110
$record = $this->replacePlaceHolder($record);
107111

108112
if (!$this->options['ignore_empty_context_and_extra'] || !empty($record['context'])) {

‎src/Symfony/Bridge/Monolog/Formatter/VarDumperFormatter.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Formatter/VarDumperFormatter.php
+6-1Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bridge\Monolog\Formatter;
1313

1414
use Monolog\Formatter\FormatterInterface;
15+
use Monolog\LogRecord;
1516
use Symfony\Component\VarDumper\Cloner\VarCloner;
1617

1718
/**
@@ -29,8 +30,12 @@ public function __construct(VarCloner $cloner = null)
2930
/**
3031
* {@inheritdoc}
3132
*/
32-
public function format(array $record): mixed
33+
public function format(array|LogRecord $record): mixed
3334
{
35+
if ($record instanceof LogRecord) {
36+
$record = $record->toArray();
37+
}
38+
3439
$record['context'] = $this->cloner->cloneVar($record['context']);
3540
$record['extra'] = $this->cloner->cloneVar($record['extra']);
3641

‎src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php
+4-3Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Monolog\Formatter\LineFormatter;
1616
use Monolog\Handler\AbstractProcessingHandler;
1717
use Monolog\Logger;
18+
use Monolog\LogRecord;
1819
use Symfony\Bridge\Monolog\Formatter\ConsoleFormatter;
1920
use Symfony\Component\Console\ConsoleEvents;
2021
use Symfony\Component\Console\Event\ConsoleCommandEvent;
@@ -75,15 +76,15 @@ public function __construct(OutputInterface $output = null, bool $bubble = true,
7576
/**
7677
* {@inheritdoc}
7778
*/
78-
public function isHandling(array $record): bool
79+
public function isHandling(array|LogRecord $record): bool
7980
{
8081
return $this->updateLevel() && parent::isHandling($record);
8182
}
8283

8384
/**
8485
* {@inheritdoc}
8586
*/
86-
public function handle(array $record): bool
87+
public function handle(array|LogRecord $record): bool
8788
{
8889
// we have to update the logging level each time because the verbosity of the
8990
// console output might have changed in the meantime (it is not immutable)
@@ -144,7 +145,7 @@ public static function getSubscribedEvents(): array
144145
/**
145146
* {@inheritdoc}
146147
*/
147-
protected function write(array $record): void
148+
protected function write(array|LogRecord $record): void
148149
{
149150
// at this point we've determined for sure that we want to output the record, so use the output's own verbosity
150151
$this->output->write((string) $record['formatted'], false, $this->output->getVerbosity());

‎src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
use Monolog\Handler\AbstractHandler;
1717
use Monolog\Handler\FormattableHandlerTrait;
1818
use Monolog\Handler\ProcessableHandlerTrait;
19+
use Monolog\Level;
20+
use Monolog\LevelName;
1921
use Monolog\Logger;
22+
use Monolog\LogRecord;
2023
use Symfony\Component\HttpClient\HttpClient;
2124
use Symfony\Contracts\HttpClient\Exception\ExceptionInterface;
2225
use Symfony\Contracts\HttpClient\HttpClientInterface;
@@ -54,7 +57,7 @@ class ElasticsearchLogstashHandler extends AbstractHandler
5457
*/
5558
private \SplObjectStorage $responses;
5659

57-
public function __construct(string $endpoint = 'http://127.0.0.1:9200', string $index = 'monolog', HttpClientInterface $client = null, string|int $level = Logger::DEBUG, bool $bubble = true)
60+
public function __construct(string $endpoint = 'http://127.0.0.1:9200', string $index = 'monolog', HttpClientInterface $client = null, string|int|Level|LevelName $level = Logger::DEBUG, bool $bubble = true)
5861
{
5962
if (!interface_exists(HttpClientInterface::class)) {
6063
throw new \LogicException(sprintf('The "%s" handler needs an HTTP client. Try running "composer require symfony/http-client".', __CLASS__));
@@ -67,7 +70,7 @@ public function __construct(string $endpoint = 'http://127.0.0.1:9200', string $
6770
$this->responses = new \SplObjectStorage();
6871
}
6972

70-
public function handle(array $record): bool
73+
public function handle(array|LogRecord $record): bool
7174
{
7275
if (!$this->isHandling($record)) {
7376
return false;

‎src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bridge\Monolog\Handler\FingersCrossed;
1313

1414
use Monolog\Handler\FingersCrossed\ActivationStrategyInterface;
15+
use Monolog\LogRecord;
1516
use Symfony\Component\HttpFoundation\RequestStack;
1617
use Symfony\Component\HttpKernel\Exception\HttpException;
1718

@@ -41,7 +42,7 @@ public function __construct(
4142
}
4243
}
4344

44-
public function isHandlerActivated(array $record): bool
45+
public function isHandlerActivated(array|LogRecord $record): bool
4546
{
4647
$isActivated = $this->inner->isHandlerActivated($record);
4748

‎src/Symfony/Bridge/Monolog/Handler/FingersCrossed/NotFoundActivationStrategy.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/FingersCrossed/NotFoundActivationStrategy.php
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bridge\Monolog\Handler\FingersCrossed;
1313

1414
use Monolog\Handler\FingersCrossed\ActivationStrategyInterface;
15+
use Monolog\LogRecord;
1516
use Symfony\Component\HttpFoundation\RequestStack;
1617
use Symfony\Component\HttpKernel\Exception\HttpException;
1718

@@ -34,7 +35,7 @@ public function __construct(
3435
$this->exclude = '{('.implode('|', $excludedUrls).')}i';
3536
}
3637

37-
public function isHandlerActivated(array $record): bool
38+
public function isHandlerActivated(array|LogRecord $record): bool
3839
{
3940
$isActivated = $this->inner->isHandlerActivated($record);
4041

‎src/Symfony/Bridge/Monolog/Handler/MailerHandler.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/MailerHandler.php
+19-7Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
use Monolog\Formatter\HtmlFormatter;
1616
use Monolog\Formatter\LineFormatter;
1717
use Monolog\Handler\AbstractProcessingHandler;
18+
use Monolog\Level;
19+
use Monolog\LevelName;
1820
use Monolog\Logger;
21+
use Monolog\LogRecord;
1922
use Symfony\Component\Mailer\MailerInterface;
2023
use Symfony\Component\Mime\Email;
2124

@@ -27,7 +30,7 @@ class MailerHandler extends AbstractProcessingHandler
2730
private MailerInterface $mailer;
2831
private \Closure|Email $messageTemplate;
2932

30-
public function __construct(MailerInterface $mailer, callable|Email $messageTemplate, string|int $level = Logger::DEBUG, bool $bubble = true)
33+
public function __construct(MailerInterface $mailer, callable|Email $messageTemplate, string|int|Level|LevelName $level = Logger::DEBUG, bool $bubble = true)
3134
{
3235
parent::__construct($level, $bubble);
3336

@@ -42,11 +45,20 @@ public function handleBatch(array $records): void
4245
{
4346
$messages = [];
4447

45-
foreach ($records as $record) {
46-
if ($record['level'] < $this->level) {
47-
continue;
48+
if (Logger::API >= 3) {
49+
foreach ($records as $record) {
50+
if ($record->level->isLowerThan($this->level)) {
51+
continue;
52+
}
53+
$messages[] = $this->processRecord($record);
54+
}
55+
} else {
56+
foreach ($records as $record) {
57+
if ($record['level'] < $this->level) {
58+
continue;
59+
}
60+
$messages[] = $this->processRecord($record);
4861
}
49-
$messages[] = $this->processRecord($record);
5062
}
5163

5264
if (!empty($messages)) {
@@ -57,7 +69,7 @@ public function handleBatch(array $records): void
5769
/**
5870
* {@inheritdoc}
5971
*/
60-
protected function write(array $record): void
72+
protected function write(array|LogRecord $record): void
6173
{
6274
$this->send((string) $record['formatted'], [$record]);
6375
}
@@ -125,7 +137,7 @@ protected function buildMessage(string $content, array $records): Email
125137
return $message;
126138
}
127139

128-
protected function getHighestRecord(array $records): array
140+
protected function getHighestRecord(array $records): array|LogRecord
129141
{
130142
$highestRecord = null;
131143
foreach ($records as $record) {

‎src/Symfony/Bridge/Monolog/Handler/NotifierHandler.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/NotifierHandler.php
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Monolog\Handler\AbstractHandler;
1515
use Monolog\Logger;
16+
use Monolog\LogRecord;
1617
use Symfony\Component\Notifier\Notification\Notification;
1718
use Symfony\Component\Notifier\Notifier;
1819
use Symfony\Component\Notifier\NotifierInterface;
@@ -26,14 +27,14 @@ class NotifierHandler extends AbstractHandler
2627
{
2728
private NotifierInterface $notifier;
2829

29-
public function __construct(NotifierInterface $notifier, string|int $level = Logger::ERROR, bool $bubble = true)
30+
public function __construct(NotifierInterface $notifier, string|int|Level|LevelName $level = Logger::ERROR, bool $bubble = true)
3031
{
3132
$this->notifier = $notifier;
3233

3334
parent::__construct(Logger::toMonologLevel($level) < Logger::ERROR ? Logger::ERROR : $level, $bubble);
3435
}
3536

36-
public function handle(array $record): bool
37+
public function handle(array|LogRecord $record): bool
3738
{
3839
if (!$this->isHandling($record)) {
3940
return false;

‎src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php
+7-4Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
use Monolog\Formatter\FormatterInterface;
1515
use Monolog\Handler\AbstractProcessingHandler;
1616
use Monolog\Handler\FormattableHandlerTrait;
17+
use Monolog\Level;
18+
use Monolog\LevelName;
1719
use Monolog\Logger;
20+
use Monolog\LogRecord;
1821
use Symfony\Bridge\Monolog\Formatter\VarDumperFormatter;
1922

2023
if (trait_exists(FormattableHandlerTrait::class)) {
@@ -62,7 +65,7 @@ trait ServerLogHandlerTrait
6265
*/
6366
private $socket;
6467

65-
public function __construct(string $host, string|int $level = Logger::DEBUG, bool $bubble = true, array $context = [])
68+
public function __construct(string $host, string|int|Level|LevelName $level = Logger::DEBUG, bool $bubble = true, array $context = [])
6669
{
6770
parent::__construct($level, $bubble);
6871

@@ -77,7 +80,7 @@ public function __construct(string $host, string|int $level = Logger::DEBUG, boo
7780
/**
7881
* {@inheritdoc}
7982
*/
80-
public function handle(array $record): bool
83+
public function handle(array|LogRecord $record): bool
8184
{
8285
if (!$this->isHandling($record)) {
8386
return false;
@@ -96,7 +99,7 @@ public function handle(array $record): bool
9699
return parent::handle($record);
97100
}
98101

99-
protected function write(array $record): void
102+
protected function write(array|LogRecord $record): void
100103
{
101104
$recordFormatted = $this->formatRecord($record);
102105

@@ -139,7 +142,7 @@ private function createSocket()
139142
return $socket;
140143
}
141144

142-
private function formatRecord(array $record): string
145+
private function formatRecord(array|LogRecord $record): string
143146
{
144147
$recordFormatted = $record['formatted'];
145148

‎src/Symfony/Bridge/Monolog/Processor/AbstractTokenProcessor.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Processor/AbstractTokenProcessor.php
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bridge\Monolog\Processor;
1313

14+
use Monolog\LogRecord;
1415
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
1516
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
1617

@@ -36,7 +37,7 @@ abstract protected function getKey(): string;
3637

3738
abstract protected function getToken(): ?TokenInterface;
3839

39-
public function __invoke(array $record): array
40+
public function __invoke(array|LogRecord $record): array|LogRecord
4041
{
4142
$record['extra'][$this->getKey()] = null;
4243

‎src/Symfony/Bridge/Monolog/Processor/ConsoleCommandProcessor.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Processor/ConsoleCommandProcessor.php
+5-4Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bridge\Monolog\Processor;
1313

14+
use Monolog\LogRecord;
1415
use Symfony\Component\Console\ConsoleEvents;
1516
use Symfony\Component\Console\Event\ConsoleEvent;
1617
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -33,13 +34,13 @@ public function __construct(bool $includeArguments = true, bool $includeOptions
3334
$this->includeOptions = $includeOptions;
3435
}
3536

36-
public function __invoke(array $records)
37+
public function __invoke(array|LogRecord $record)
3738
{
38-
if (isset($this->commandData) && !isset($records['extra']['command'])) {
39-
$records['extra']['command'] = $this->commandData;
39+
if (isset($this->commandData) && !isset($record['extra']['command'])) {
40+
$record['extra']['command'] = $this->commandData;
4041
}
4142

42-
return $records;
43+
return $record;
4344
}
4445

4546
public function reset()

‎src/Symfony/Bridge/Monolog/Processor/DebugProcessor.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Processor/DebugProcessor.php
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bridge\Monolog\Processor;
1313

1414
use Monolog\Logger;
15+
use Monolog\LogRecord;
1516
use Symfony\Component\HttpFoundation\Request;
1617
use Symfony\Component\HttpFoundation\RequestStack;
1718
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
@@ -28,7 +29,7 @@ public function __construct(RequestStack $requestStack = null)
2829
$this->requestStack = $requestStack;
2930
}
3031

31-
public function __invoke(array $record)
32+
public function __invoke(array|LogRecord $record)
3233
{
3334
$hash = $this->requestStack && ($request = $this->requestStack->getCurrentRequest()) ? spl_object_hash($request) : '';
3435

‎src/Symfony/Bridge/Monolog/Processor/RouteProcessor.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Monolog/Processor/RouteProcessor.php
+5-4Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bridge\Monolog\Processor;
1313

14+
use Monolog\LogRecord;
1415
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
1516
use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
1617
use Symfony\Component\HttpKernel\Event\RequestEvent;
@@ -35,13 +36,13 @@ public function __construct(bool $includeParams = true)
3536
$this->reset();
3637
}
3738

38-
public function __invoke(array $records): array
39+
public function __invoke(array|LogRecord $record): array|LogRecord
3940
{
40-
if ($this->routeData && !isset($records['extra']['requests'])) {
41-
$records['extra']['requests'] = array_values($this->routeData);
41+
if ($this->routeData && !isset($record['extra']['requests'])) {
42+
$record['extra']['requests'] = array_values($this->routeData);
4243
}
4344

44-
return $records;
45+
return $record;
4546
}
4647

4748
public function reset()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.