Skip to content

Commit aff730e

Browse files
committed
minor #509 Convert config from XML to PHP (nicolas-grekas)
This PR was merged into the 3.x-dev branch. Discussion ---------- Convert config from XML to PHP PHP is nicer than XML and symfony/symfony#60568 might make this required at some point. Commits ------- 0083a78 Convert config from XML to PHP
2 parents 9913d9c + 0083a78 commit aff730e

File tree

5 files changed

+81
-59
lines changed

5 files changed

+81
-59
lines changed

DependencyInjection/MonologExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
use Symfony\Component\DependencyInjection\ChildDefinition;
3030
use Symfony\Component\DependencyInjection\ContainerBuilder;
3131
use Symfony\Component\DependencyInjection\Definition;
32-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
32+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
3333
use Symfony\Component\DependencyInjection\Reference;
3434
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
3535
use Symfony\Component\HttpKernel\Log\DebugLoggerConfigurator;
@@ -61,8 +61,8 @@ public function load(array $configs, ContainerBuilder $container)
6161
$config = $this->processConfiguration($configuration, $configs);
6262

6363
if (isset($config['handlers'])) {
64-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
65-
$loader->load('monolog.xml');
64+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
65+
$loader->load('monolog.php');
6666

6767
if (!class_exists(DebugLoggerConfigurator::class)) {
6868
$container->getDefinition('monolog.logger_prototype')->setClass(LegacyLogger::class);

Resources/config/monolog.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
13+
14+
use Monolog\Formatter\ChromePHPFormatter;
15+
use Monolog\Formatter\GelfMessageFormatter;
16+
use Monolog\Formatter\HtmlFormatter;
17+
use Monolog\Formatter\JsonFormatter;
18+
use Monolog\Formatter\LineFormatter;
19+
use Monolog\Formatter\LogglyFormatter;
20+
use Monolog\Formatter\LogstashFormatter;
21+
use Monolog\Formatter\NormalizerFormatter;
22+
use Monolog\Formatter\ScalarFormatter;
23+
use Monolog\Formatter\WildfireFormatter;
24+
use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
25+
use Monolog\Logger;
26+
use Psr\Log\LoggerInterface;
27+
use Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy;
28+
use Symfony\Component\HttpClient\HttpClient;
29+
use Symfony\Contracts\HttpClient\HttpClientInterface;
30+
31+
return static function (ContainerConfigurator $container) {
32+
$container->services()
33+
34+
->alias('logger', 'monolog.logger')
35+
->alias(LoggerInterface::class, 'logger')
36+
37+
->set('monolog.logger')
38+
->parent('monolog.logger_prototype')
39+
->args(['index_0' => 'app'])
40+
->call('useMicrosecondTimestamps', [param('monolog.use_microseconds')])
41+
42+
->set('monolog.logger_prototype', Logger::class)
43+
->args([abstract_arg('channel')])
44+
->abstract()
45+
46+
->set('monolog.activation_strategy.not_found', NotFoundActivationStrategy::class)->abstract()
47+
->set('monolog.handler.fingers_crossed.error_level_activation_strategy', ErrorLevelActivationStrategy::class)->abstract()
48+
49+
// Formatters
50+
->set('monolog.formatter.chrome_php', ChromePHPFormatter::class)
51+
->set('monolog.formatter.gelf_message', GelfMessageFormatter::class)
52+
->set('monolog.formatter.html', HtmlFormatter::class)
53+
->set('monolog.formatter.json', JsonFormatter::class)
54+
->set('monolog.formatter.line', LineFormatter::class)
55+
->set('monolog.formatter.loggly', LogglyFormatter::class)
56+
->set('monolog.formatter.normalizer', NormalizerFormatter::class)
57+
->set('monolog.formatter.scalar', ScalarFormatter::class)
58+
->set('monolog.formatter.wildfire', WildfireFormatter::class)
59+
60+
->set('monolog.formatter.logstash', LogstashFormatter::class)
61+
->args(['app'])
62+
63+
->set('monolog.http_client', HttpClientInterface::class)
64+
->factory([HttpClient::class, 'create'])
65+
;
66+
};

Resources/config/monolog.xml

Lines changed: 0 additions & 44 deletions
This file was deleted.

Tests/DependencyInjection/Compiler/AddProcessorsPassTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
use Symfony\Component\Config\FileLocator;
2020
use Symfony\Component\DependencyInjection\ContainerBuilder;
2121
use Symfony\Component\DependencyInjection\Definition;
22-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
22+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
2323
use Symfony\Component\DependencyInjection\Reference;
2424

2525
class AddProcessorsPassTest extends TestCase
@@ -42,8 +42,8 @@ public function testHandlerProcessors()
4242
public function testFailureOnHandlerWithoutPushProcessor()
4343
{
4444
$container = new ContainerBuilder();
45-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
46-
$loader->load('monolog.xml');
45+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
46+
$loader->load('monolog.php');
4747

4848
$service = new Definition(NullHandler::class);
4949
$service->addTag('monolog.processor', ['handler' => 'test3']);
@@ -68,8 +68,8 @@ public function testFailureOnHandlerWithoutPushProcessor()
6868
protected function getContainer()
6969
{
7070
$container = new ContainerBuilder();
71-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
72-
$loader->load('monolog.xml');
71+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
72+
$loader->load('monolog.php');
7373

7474
$definition = $container->getDefinition('monolog.logger_prototype');
7575
$container->setParameter('monolog.handler.console.class', ConsoleHandler::class);

Tests/DependencyInjection/Compiler/LoggerChannelPassTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
use Symfony\Component\Config\FileLocator;
1818
use Symfony\Component\DependencyInjection\ContainerBuilder;
1919
use Symfony\Component\DependencyInjection\Definition;
20-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
20+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
2121
use Symfony\Component\DependencyInjection\Reference;
2222

2323
class LoggerChannelPassTest extends TestCase
@@ -147,8 +147,8 @@ public function testChannelsConfigurationOptionSupportsAppChannel()
147147
private function getContainer()
148148
{
149149
$container = new ContainerBuilder();
150-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
151-
$loader->load('monolog.xml');
150+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
151+
$loader->load('monolog.php');
152152
$definition = $container->getDefinition('monolog.logger_prototype');
153153
$container->set('monolog.handler.test', new Definition('%monolog.handler.null.class%', [100, false]));
154154
$definition->addMethodCall('pushHandler', [new Reference('monolog.handler.test')]);
@@ -189,8 +189,8 @@ private function getContainer()
189189
private function getContainerWithSetter()
190190
{
191191
$container = new ContainerBuilder();
192-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
193-
$loader->load('monolog.xml');
192+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
193+
$loader->load('monolog.php');
194194
$definition = $container->getDefinition('monolog.logger_prototype');
195195
$container->set('monolog.handler.test', new Definition('%monolog.handler.null.class%', [100, false]));
196196
$definition->addMethodCall('pushHandler', [new Reference('monolog.handler.test')]);
@@ -222,8 +222,8 @@ private function getFunctionalContainer()
222222
$container->setParameter('monolog.handlers_to_channels', []);
223223
$container->setParameter('monolog.use_microseconds', true);
224224

225-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
226-
$loader->load('monolog.xml');
225+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
226+
$loader->load('monolog.php');
227227

228228
$container->addCompilerPass(new LoggerChannelPass());
229229

0 commit comments

Comments
 (0)