diff --git a/src/DependencyInjection/MonologExtension.php b/src/DependencyInjection/MonologExtension.php index b57c31f9..5193a672 100644 --- a/src/DependencyInjection/MonologExtension.php +++ b/src/DependencyInjection/MonologExtension.php @@ -19,10 +19,8 @@ use Monolog\Processor\PsrLogMessageProcessor; use Monolog\ResettableInterface; use Symfony\Bridge\Monolog\Handler\FingersCrossed\HttpCodeActivationStrategy; -use Symfony\Bridge\Monolog\Logger as LegacyLogger; use Symfony\Bridge\Monolog\Processor\SwitchUserTokenProcessor; use Symfony\Bridge\Monolog\Processor\TokenProcessor; -use Symfony\Bridge\Monolog\Processor\WebProcessor; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\Argument\BoundArgument; use Symfony\Component\DependencyInjection\ChildDefinition; @@ -31,7 +29,6 @@ use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\DependencyInjection\Extension; -use Symfony\Component\HttpKernel\Log\DebugLoggerConfigurator; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -39,10 +36,8 @@ * * @author Jordi Boggiano * @author Christophe Coevoet - * - * @final since 3.9.0 */ -class MonologExtension extends Extension +final class MonologExtension extends Extension { private $nestedHandlers = []; @@ -61,10 +56,6 @@ public function load(array $configs, ContainerBuilder $container) $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../config')); $loader->load('monolog.php'); - if (!class_exists(DebugLoggerConfigurator::class)) { - $container->getDefinition('monolog.logger_prototype')->setClass(LegacyLogger::class); - } - $container->setParameter('monolog.use_microseconds', $config['use_microseconds']); $handlers = []; @@ -95,19 +86,13 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('monolog.additional_channels', $config['channels'] ?? []); - if (interface_exists(ProcessorInterface::class)) { - $container->registerForAutoconfiguration(ProcessorInterface::class) - ->addTag('monolog.processor'); - } else { - $container->registerForAutoconfiguration(WebProcessor::class) - ->addTag('monolog.processor'); - } - if (interface_exists(ResettableInterface::class)) { - $container->registerForAutoconfiguration(ResettableInterface::class) - ->addTag('kernel.reset', ['method' => 'reset']); - } + $container->registerForAutoconfiguration(ProcessorInterface::class) + ->addTag('monolog.processor'); + $container->registerForAutoconfiguration(ResettableInterface::class) + ->addTag('kernel.reset', ['method' => 'reset']); $container->registerForAutoconfiguration(TokenProcessor::class) ->addTag('monolog.processor'); + if (interface_exists(HttpClientInterface::class)) { $handlerAutoconfiguration = $container->registerForAutoconfiguration(HandlerInterface::class); $handlerAutoconfiguration->setBindings($handlerAutoconfiguration->getBindings() + [ @@ -115,23 +100,21 @@ public function load(array $configs, ContainerBuilder $container) ]); } - if (80000 <= \PHP_VERSION_ID) { - $container->registerAttributeForAutoconfiguration(AsMonologProcessor::class, static function (ChildDefinition $definition, AsMonologProcessor $attribute, \Reflector $reflector): void { - $tagAttributes = get_object_vars($attribute); - if ($reflector instanceof \ReflectionMethod) { - if (isset($tagAttributes['method'])) { - throw new \LogicException(\sprintf('AsMonologProcessor attribute cannot declare a method on "%s::%s()".', $reflector->class, $reflector->name)); - } - - $tagAttributes['method'] = $reflector->getName(); + $container->registerAttributeForAutoconfiguration(AsMonologProcessor::class, static function (ChildDefinition $definition, AsMonologProcessor $attribute, \Reflector $reflector): void { + $tagAttributes = get_object_vars($attribute); + if ($reflector instanceof \ReflectionMethod) { + if (isset($tagAttributes['method'])) { + throw new \LogicException(\sprintf('AsMonologProcessor attribute cannot declare a method on "%s::%s()".', $reflector->class, $reflector->name)); } - $definition->addTag('monolog.processor', $tagAttributes); - }); - $container->registerAttributeForAutoconfiguration(WithMonologChannel::class, static function (ChildDefinition $definition, WithMonologChannel $attribute): void { - $definition->addTag('monolog.logger', ['channel' => $attribute->channel]); - }); - } + $tagAttributes['method'] = $reflector->getName(); + } + + $definition->addTag('monolog.processor', $tagAttributes); + }); + $container->registerAttributeForAutoconfiguration(WithMonologChannel::class, static function (ChildDefinition $definition, WithMonologChannel $attribute): void { + $definition->addTag('monolog.logger', ['channel' => $attribute->channel]); + }); } /** @@ -899,23 +882,12 @@ private function getHandlerClassByType($handlerType) private function buildPsrLogMessageProcessor(ContainerBuilder $container, array $processorOptions): string { - static $hasConstructorArguments; - - if (!isset($hasConstructorArguments)) { - $reflectionConstructor = (new \ReflectionClass(PsrLogMessageProcessor::class))->getConstructor(); - $hasConstructorArguments = null !== $reflectionConstructor && $reflectionConstructor->getNumberOfParameters() > 0; - unset($reflectionConstructor); - } - $processorId = 'monolog.processor.psr_log_message'; $processorArguments = []; unset($processorOptions['enabled']); - if (!empty($processorOptions)) { - if (!$hasConstructorArguments) { - throw new \RuntimeException('Monolog 1.26 or higher is required for the "date_format" and "remove_used_context_fields" options to be used.'); - } + if ($processorOptions) { $processorArguments = [ $processorOptions['date_format'] ?? null, $processorOptions['remove_used_context_fields'] ?? false,