Skip to content

Commit b6e7432

Browse files
committed
Log level mapping is done inside the handlers
1 parent d84d39c commit b6e7432

File tree

3 files changed

+33
-99
lines changed

3 files changed

+33
-99
lines changed

DependencyInjection/MonologExtension.php

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -48,33 +48,6 @@ class MonologExtension extends Extension
4848

4949
private $swiftMailerHandlers = [];
5050

51-
private function levelToMonologConst($level, ContainerBuilder $container)
52-
{
53-
if (null === $level || is_numeric($level)) {
54-
return $level;
55-
}
56-
57-
if (is_string($level) && (str_contains($level, 'env_') || str_contains($level, '%'))) {
58-
$serviceId = 'monolog.level.' . $level;
59-
if (!$container->has($serviceId)) {
60-
$container->register($serviceId)
61-
->setClass('int')
62-
->setFactory([Logger::class, 'toMonologLevel'])
63-
->setArguments([$level]);
64-
}
65-
66-
return new Reference($serviceId);
67-
}
68-
69-
$level = Logger::toMonologLevel($level);
70-
71-
if (function_exists('enum_exists') && enum_exists(Level::class) && $level instanceof Level) {
72-
$level = $level->value;
73-
}
74-
75-
return $level;
76-
}
77-
7851
/**
7952
* Loads the Monolog configuration.
8053
*
@@ -199,8 +172,6 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
199172
$handlerClass = $this->getHandlerClassByType($handler['type']);
200173
$definition = new Definition($handlerClass);
201174

202-
$handler['level'] = $this->levelToMonologConst($handler['level'], $container);
203-
204175
if ($handler['include_stacktraces']) {
205176
$definition->setConfigurator(['Symfony\\Bundle\\MonologBundle\\MonologBundle', 'includeStacktraces']);
206177
}
@@ -434,10 +405,6 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
434405
break;
435406

436407
case 'fingers_crossed':
437-
$handler['action_level'] = $this->levelToMonologConst($handler['action_level'], $container);
438-
if (null !== $handler['passthru_level']) {
439-
$handler['passthru_level'] = $this->levelToMonologConst($handler['passthru_level'], $container);
440-
}
441408
$nestedHandlerId = $this->getHandlerId($handler['handler']);
442409
$this->markNestedHandler($nestedHandlerId);
443410

@@ -483,12 +450,6 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
483450
break;
484451

485452
case 'filter':
486-
$handler['min_level'] = $this->levelToMonologConst($handler['min_level'], $container);
487-
$handler['max_level'] = $this->levelToMonologConst($handler['max_level'], $container);
488-
foreach (array_keys($handler['accepted_levels']) as $k) {
489-
$handler['accepted_levels'][$k] = $this->levelToMonologConst($handler['accepted_levels'][$k], $container);
490-
}
491-
492453
$nestedHandlerId = $this->getHandlerId($handler['handler']);
493454
$this->markNestedHandler($nestedHandlerId);
494455
$minLevelOrList = !empty($handler['accepted_levels']) ? $handler['accepted_levels'] : $handler['min_level'];

Tests/DependencyInjection/FixtureMonologExtensionTest.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function testLegacyLoadWithSeveralHandlers()
2929
$this->markTestSkipped('Symfony MonologBridge < 5.2 is needed.');
3030
}
3131

32-
$this->doTestLoadWithSeveralHandlers(\Monolog\Logger::ERROR);
32+
$this->doTestLoadWithSeveralHandlers('ERROR');
3333
}
3434

3535
public function testLoadWithSeveralHandlers()
@@ -38,7 +38,7 @@ public function testLoadWithSeveralHandlers()
3838
$this->markTestSkipped('Symfony MonologBridge >= 5.2 is needed.');
3939
}
4040

41-
$this->doTestLoadWithSeveralHandlers(new Definition(ErrorLevelActivationStrategy::class, [\Monolog\Logger::ERROR]));
41+
$this->doTestLoadWithSeveralHandlers(new Definition(ErrorLevelActivationStrategy::class, ['ERROR']));
4242
}
4343

4444
private function doTestLoadWithSeveralHandlers($activation)
@@ -59,15 +59,15 @@ private function doTestLoadWithSeveralHandlers($activation)
5959

6060
$handler = $container->getDefinition('monolog.handler.custom');
6161
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
62-
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666, false]);
62+
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', 'ERROR', false, 0666, false]);
6363

6464
$handler = $container->getDefinition('monolog.handler.main');
6565
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\FingersCrossedHandler');
66-
$this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested'), $activation, 0, true, true, \Monolog\Logger::NOTICE]);
66+
$this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested'), $activation, 0, true, true, 'NOTICE']);
6767

6868
$handler = $container->getDefinition('monolog.handler.filtered');
6969
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\FilterHandler');
70-
$this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested2'), [\Monolog\Logger::WARNING, \Monolog\Logger::ERROR], \Monolog\Logger::EMERGENCY, true]);
70+
$this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested2'), ['WARNING', 'ERROR'], 'EMERGENCY', true]);
7171
}
7272

7373
/** @group legacy */
@@ -77,7 +77,7 @@ public function testLegacyLoadWithOverwriting()
7777
$this->markTestSkipped('Symfony MonologBridge < 5.2 is needed.');
7878
}
7979

80-
$this->doTestLoadWithOverwriting(\Monolog\Logger::ERROR);
80+
$this->doTestLoadWithOverwriting('ERROR');
8181
}
8282

8383
public function testLoadWithOverwriting()
@@ -86,7 +86,7 @@ public function testLoadWithOverwriting()
8686
$this->markTestSkipped('Symfony MonologBridge >= 5.2 is needed.');
8787
}
8888

89-
$this->doTestLoadWithOverwriting(new Definition(ErrorLevelActivationStrategy::class, [\Monolog\Logger::ERROR]));
89+
$this->doTestLoadWithOverwriting(new Definition(ErrorLevelActivationStrategy::class, ['ERROR']));
9090
}
9191

9292
private function doTestLoadWithOverwriting($activation)
@@ -106,7 +106,7 @@ private function doTestLoadWithOverwriting($activation)
106106

107107
$handler = $container->getDefinition('monolog.handler.custom');
108108
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
109-
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', \Monolog\Logger::WARNING, true, null, false]);
109+
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', 'WARNING', true, null, false]);
110110

111111
$handler = $container->getDefinition('monolog.handler.main');
112112
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\FingersCrossedHandler');
@@ -132,7 +132,7 @@ public function testLoadWithNewAtEnd()
132132

133133
$handler = $container->getDefinition('monolog.handler.new');
134134
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
135-
$this->assertDICConstructorArguments($handler, ['/tmp/monolog.log', \Monolog\Logger::ERROR, true, null, false]);
135+
$this->assertDICConstructorArguments($handler, ['/tmp/monolog.log', 'ERROR', true, null, false]);
136136
}
137137

138138
public function testLoadWithNewAndPriority()
@@ -156,15 +156,15 @@ public function testLoadWithNewAndPriority()
156156

157157
$handler = $container->getDefinition('monolog.handler.main');
158158
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\BufferHandler');
159-
$this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested'), 0, \Monolog\Logger::INFO, true, false]);
159+
$this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested'), 0, 'INFO', true, false]);
160160

161161
$handler = $container->getDefinition('monolog.handler.first');
162162
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\RotatingFileHandler');
163-
$this->assertDICConstructorArguments($handler, ['/tmp/monolog.log', 0, \Monolog\Logger::ERROR, true, null, false]);
163+
$this->assertDICConstructorArguments($handler, ['/tmp/monolog.log', 0, 'ERROR', true, null, false]);
164164

165165
$handler = $container->getDefinition('monolog.handler.last');
166166
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
167-
$this->assertDICConstructorArguments($handler, ['/tmp/last.log', \Monolog\Logger::ERROR, true, null, false]);
167+
$this->assertDICConstructorArguments($handler, ['/tmp/last.log', 'ERROR', true, null, false]);
168168
}
169169

170170
public function testHandlersWithChannels()
@@ -209,7 +209,7 @@ public function testServerLog()
209209

210210
$this->assertEquals([
211211
'0:9911',
212-
100,
212+
'DEBUG',
213213
true,
214214
], $container->getDefinition('monolog.handler.server_log')->getArguments());
215215
}

Tests/DependencyInjection/MonologExtensionTest.php

Lines changed: 20 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function testLoadWithDefault()
4444

4545
$handler = $container->getDefinition('monolog.handler.main');
4646
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
47-
$this->assertDICConstructorArguments($handler, ['%kernel.logs_dir%/%kernel.environment%.log', \Monolog\Logger::DEBUG, true, null, false]);
47+
$this->assertDICConstructorArguments($handler, ['%kernel.logs_dir%/%kernel.environment%.log', 'DEBUG', true, null, false]);
4848
$this->assertDICDefinitionMethodCallAt(0, $handler, 'pushProcessor', [new Reference('monolog.processor.psr_log_message')]);
4949
}
5050

@@ -62,16 +62,7 @@ public function testLoadWithCustomValues()
6262

6363
$handler = $container->getDefinition('monolog.handler.custom');
6464
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
65-
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666, true]);
66-
}
67-
68-
public function testLoadWithUnknownLevel()
69-
{
70-
$this->expectException(\Psr\Log\InvalidArgumentException::class);
71-
$this->expectExceptionMessage('Level "warn" is not defined, use one of:');
72-
$container = $this->getContainer([['handlers' => [
73-
'custom' => ['type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => false, 'level' => 'warn', 'file_permission' => '0666', 'use_locking' => true]
74-
]]]);
65+
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', 'ERROR', false, 0666, true]);
7566
}
7667

7768
public function testLoadWithNestedHandler()
@@ -91,7 +82,7 @@ public function testLoadWithNestedHandler()
9182

9283
$handler = $container->getDefinition('monolog.handler.custom');
9384
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
94-
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666, false]);
85+
$this->assertDICConstructorArguments($handler, ['/tmp/symfony.log', 'ERROR', false, 0666, false]);
9586
}
9687

9788
public function testLoadWithServiceHandler()
@@ -228,7 +219,7 @@ public function testSyslogHandlerWithLogopts()
228219

229220
$handler = $container->getDefinition('monolog.handler.main');
230221
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\SyslogHandler');
231-
$this->assertDICConstructorArguments($handler, [false, 'user', \Monolog\Logger::DEBUG, true, LOG_CONS]);
222+
$this->assertDICConstructorArguments($handler, [false, 'user', 'DEBUG', true, LOG_CONS]);
232223
}
233224

234225
public function testRollbarHandlerCreatesNotifier()
@@ -244,7 +235,7 @@ public function testRollbarHandlerCreatesNotifier()
244235

245236
$handler = $container->getDefinition('monolog.handler.main');
246237
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\RollbarHandler');
247-
$this->assertDICConstructorArguments($handler, [new Reference('monolog.rollbar.notifier.1c8e6a67728dff6a209f828427128dd8b3c2b746'), \Monolog\Logger::DEBUG, true]);
238+
$this->assertDICConstructorArguments($handler, [new Reference('monolog.rollbar.notifier.1c8e6a67728dff6a209f828427128dd8b3c2b746'), 'DEBUG', true]);
248239
}
249240

250241
public function testRollbarHandlerReusesNotifier()
@@ -263,7 +254,7 @@ public function testRollbarHandlerReusesNotifier()
263254

264255
$handler = $container->getDefinition('monolog.handler.main');
265256
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\RollbarHandler');
266-
$this->assertDICConstructorArguments($handler, [new Reference('my_rollbar_id'), \Monolog\Logger::DEBUG, true]);
257+
$this->assertDICConstructorArguments($handler, [new Reference('my_rollbar_id'), 'DEBUG', true]);
267258
}
268259

269260
public function testSocketHandler()
@@ -288,7 +279,7 @@ public function testSocketHandler()
288279

289280
$handler = $container->getDefinition('monolog.handler.socket');
290281
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\SocketHandler');
291-
$this->assertDICConstructorArguments($handler, ['localhost:50505', \Monolog\Logger::DEBUG, true]);
282+
$this->assertDICConstructorArguments($handler, ['localhost:50505', 'DEBUG', true]);
292283
$this->assertDICDefinitionMethodCallAt(0, $handler, 'pushProcessor', [new Reference('monolog.processor.psr_log_message')]);
293284
$this->assertDICDefinitionMethodCallAt(1, $handler, 'setTimeout', ['1']);
294285
$this->assertDICDefinitionMethodCallAt(2, $handler, 'setConnectionTimeout', ['0.6']);
@@ -354,7 +345,7 @@ public function testRavenHandlerWhenADSNAndAClientAreSpecified()
354345
$this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', [new Reference('monolog.handler.raven')]);
355346

356347
$handler = $container->getDefinition('monolog.handler.raven');
357-
$this->assertDICConstructorArguments($handler, [new Reference('raven.client'), 100, true]);
348+
$this->assertDICConstructorArguments($handler, [new Reference('raven.client'), 'DEBUG', true]);
358349
}
359350

360351
public function testRavenHandlerWhenAClientIsSpecified()
@@ -374,7 +365,7 @@ public function testRavenHandlerWhenAClientIsSpecified()
374365
$this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', [new Reference('monolog.handler.raven')]);
375366

376367
$handler = $container->getDefinition('monolog.handler.raven');
377-
$this->assertDICConstructorArguments($handler, [new Reference('raven.client'), 100, true]);
368+
$this->assertDICConstructorArguments($handler, [new Reference('raven.client'), 'DEBUG', true]);
378369
}
379370

380371
public function testSentryHandlerWhenConfigurationIsWrong()
@@ -487,7 +478,7 @@ public function testSentryHandlerWhenAHubIsSpecified()
487478
$this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', [new Reference('monolog.handler.sentry')]);
488479

489480
$handler = $container->getDefinition('monolog.handler.sentry');
490-
$this->assertDICConstructorArguments($handler, [new Reference('sentry.hub'), \Monolog\Logger::DEBUG, true, false]);
481+
$this->assertDICConstructorArguments($handler, [new Reference('sentry.hub'), 'DEBUG', true, false]);
491482
}
492483

493484
public function testSentryHandlerWhenAHubAndAClientAreSpecified()
@@ -540,7 +531,7 @@ public function testLogglyHandler()
540531
$this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', [new Reference('monolog.handler.loggly')]);
541532
$handler = $container->getDefinition('monolog.handler.loggly');
542533
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\LogglyHandler');
543-
$this->assertDICConstructorArguments($handler, [$token, \Monolog\Logger::DEBUG, true]);
534+
$this->assertDICConstructorArguments($handler, [$token, 'DEBUG', true]);
544535
$this->assertDICDefinitionMethodCallAt(0, $handler, 'pushProcessor', [new Reference('monolog.processor.psr_log_message')]);
545536

546537
$container = $this->getContainer([['handlers' => ['loggly' => [
@@ -558,7 +549,7 @@ public function testLegacyFingersCrossedHandlerWhenExcluded404sAreSpecified()
558549
$this->markTestSkipped('Symfony MonologBridge < 5.2 is needed.');
559550
}
560551

561-
$this->doTestFingersCrossedHandlerWhenExcluded404sAreSpecified(\Monolog\Logger::WARNING);
552+
$this->doTestFingersCrossedHandlerWhenExcluded404sAreSpecified('WARNING');
562553
}
563554

564555
/** @group legacy */
@@ -568,7 +559,7 @@ public function testFingersCrossedHandlerWhenExcluded404sAreSpecified()
568559
$this->markTestSkipped('Symfony MonologBridge >= 5.2 is needed.');
569560
}
570561

571-
$this->doTestFingersCrossedHandlerWhenExcluded404sAreSpecified(new Definition(ErrorLevelActivationStrategy::class, [\Monolog\Logger::WARNING]));
562+
$this->doTestFingersCrossedHandlerWhenExcluded404sAreSpecified(new Definition(ErrorLevelActivationStrategy::class, ['WARNING']));
572563
}
573564

574565
private function doTestFingersCrossedHandlerWhenExcluded404sAreSpecified($activation)
@@ -603,7 +594,7 @@ public function testLegacyFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified
603594
$this->markTestSkipped('Symfony MonologBridge < 5.2 is needed.');
604595
}
605596

606-
$this->doTestFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified(\Monolog\Logger::WARNING);
597+
$this->doTestFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified('WARNING');
607598
}
608599

609600
public function testFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified()
@@ -612,7 +603,7 @@ public function testFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified()
612603
$this->markTestSkipped('Symfony MonologBridge >= 5.2 is needed.');
613604
}
614605

615-
$this->doTestFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified(new Definition(ErrorLevelActivationStrategy::class, [\Monolog\Logger::WARNING]));
606+
$this->doTestFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified(new Definition(ErrorLevelActivationStrategy::class, ['WARNING']));
616607
}
617608

618609
private function doTestFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified($activation)
@@ -737,30 +728,12 @@ public function testLogLevelfromParameter(array $parameters, array $config, $exp
737728
public function provideLoglevelParameterConfig()
738729
{
739730
return [
740-
'browser console with numeric level' => [
741-
[],
742-
['type' => 'browser_console', 'level' => '300'],
743-
'Monolog\Handler\BrowserConsoleHandler',
744-
[
745-
300,
746-
true,
747-
]
748-
],
749-
'browser console with named level' => [
750-
[],
751-
['type' => 'browser_console', 'level' => 'info'],
752-
'Monolog\Handler\BrowserConsoleHandler',
753-
[
754-
200,
755-
true,
756-
]
757-
],
758731
'browser console with parameter level' => [
759732
['%log_level%' => 'info'],
760733
['type' => 'browser_console', 'level' => '%log_level%'],
761734
'Monolog\Handler\BrowserConsoleHandler',
762735
[
763-
new Reference('monolog.level.%log_level%'),
736+
'%log_level%',
764737
true,
765738
]
766739
],
@@ -769,7 +742,7 @@ public function provideLoglevelParameterConfig()
769742
['type' => 'browser_console', 'level' => '%env(LOG_LEVEL)%'],
770743
'Monolog\Handler\BrowserConsoleHandler',
771744
[
772-
new Reference('monolog.level.%env(LOG_LEVEL)%'),
745+
'%env(LOG_LEVEL)%',
773746
true,
774747
]
775748
],
@@ -779,7 +752,7 @@ public function provideLoglevelParameterConfig()
779752
'Monolog\Handler\StreamHandler',
780753
[
781754
'%kernel.logs_dir%/%kernel.environment%.log',
782-
new Reference('monolog.level.%env(LOG_LEVEL)%'),
755+
'%env(LOG_LEVEL)%',
783756
true,
784757
null,
785758
false,
@@ -791,7 +764,7 @@ public function provideLoglevelParameterConfig()
791764
'Monolog\Handler\StreamHandler',
792765
[
793766
'%kernel.logs_dir%/%kernel.environment%.log',
794-
new Reference('monolog.level.%env(LOG_LEVEL)%'),
767+
'%env(LOG_LEVEL)%',
795768
true,
796769
null,
797770
false,
@@ -803,7 +776,7 @@ public function provideLoglevelParameterConfig()
803776
'Monolog\Handler\StreamHandler',
804777
[
805778
'%kernel.logs_dir%/%kernel.environment%.log',
806-
new Reference('monolog.level.%log_level%'),
779+
'%log_level%',
807780
true,
808781
null,
809782
false,

0 commit comments

Comments
 (0)