diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 1cbdbc0..9af53dc 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -40,6 +40,12 @@ public function getConfigTreeBuilder() ->defaultFalse() ->treatNullLike(false) ->end() + ->arrayNode('middlewares') + ->info('List of middlewares to use') + ->prototype('scalar') + ->end() + ->treatNullLike([]) + ->end() ->booleanNode('enable_request_id') ->info('Add a request identifier to all log entries. Allows for easier tracking of logs during a request') ->defaultTrue() diff --git a/DependencyInjection/OnelogExtension.php b/DependencyInjection/OnelogExtension.php index 7d75332..7b41d73 100644 --- a/DependencyInjection/OnelogExtension.php +++ b/DependencyInjection/OnelogExtension.php @@ -27,6 +27,7 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('onelog.logger_service', $config['logger_service']); $container->setParameter('onelog.register_global', $config['register_global']); + $container->setParameter('onelog.middlewares', $config['middlewares']); $container->setParameter('onelog.register_monolog_channels', $config['register_monolog_channels']); $container->setParameter('onelog.enable_request_id', $config['enable_request_id']); } diff --git a/Middleware/ContextProcessor.php b/Middleware/ContextProcessor.php index 7658bc0..03ee40f 100644 --- a/Middleware/ContextProcessor.php +++ b/Middleware/ContextProcessor.php @@ -24,12 +24,6 @@ public function process($level, $message, $context): array $context = array_merge($context, $message->getContext()); } - if ($message instanceof \Throwable) { - $context = array_merge($context, [ - 'code' => $message->getCode(), - ]); - } - return [$message, $context]; } } diff --git a/Middleware/SimpleMessageProcessor.php b/Middleware/SimpleMessageProcessor.php new file mode 100644 index 0000000..dc14fb3 --- /dev/null +++ b/Middleware/SimpleMessageProcessor.php @@ -0,0 +1,29 @@ + + */ +class SimpleMessageProcessor implements MiddlewareInterface +{ + /** + * @param string $level + * @param mixed $message + * @param array $context + * + * @return array + */ + public function process($level, $message, $context): array + { + if ($message instanceof \Throwable) { + $message = $message->getMessage(); + } + + return [$message, $context]; + } +} diff --git a/Middleware/StackTraceProcessor.php b/Middleware/StackTraceProcessor.php index 53c3261..1b4c726 100644 --- a/Middleware/StackTraceProcessor.php +++ b/Middleware/StackTraceProcessor.php @@ -3,6 +3,7 @@ namespace KoderHut\OnelogBundle\Middleware; use KoderHut\OnelogBundle\ContextualInterface; +use KoderHut\OnelogBundle\MiddlewareProcessor; /** * Class StackTraceProcessor @@ -10,7 +11,7 @@ * @author Joao Jacome <969041+joaojacome@users.noreply.github.com> */ class StackTraceProcessor implements MiddlewareInterface -{ +{ /** * @param string $level * @param mixed $message @@ -24,7 +25,6 @@ public function process($level, $message, $context): array $context = array_merge($context, [ 'stack_trace' => $message->getTraceAsString(), ]); - $message = $message->getMessage(); } return [$message, $context]; diff --git a/MiddlewareProcessor.php b/MiddlewareProcessor.php index 8cab40b..6ba44ee 100644 --- a/MiddlewareProcessor.php +++ b/MiddlewareProcessor.php @@ -2,7 +2,7 @@ namespace KoderHut\OnelogBundle; -use KoderHut\OneLogBundle\Middleware\MiddlewareInterface; +use KoderHut\OnelogBundle\Middleware\MiddlewareInterface; /** * Class MiddlewareProcessor @@ -19,7 +19,7 @@ class MiddlewareProcessor implements MiddlewareInterface /** * @param MiddlewareInterface $middleware */ - private function registerMiddleware(MiddlewareInterface $middleware) + public function registerMiddleware(MiddlewareInterface $middleware) { $this->middlewares[] = $middleware; } @@ -31,7 +31,7 @@ private function registerMiddleware(MiddlewareInterface $middleware) * * @return array */ - public function process(string $level, $message, $context): array + public function process($level, $message, $context): array { foreach ($this->middlewares as $middleware) { [$message, $context] = $middleware->process($level, $message, $context); diff --git a/OnelogBundle.php b/OnelogBundle.php index f43a7f2..5ed9725 100644 --- a/OnelogBundle.php +++ b/OnelogBundle.php @@ -24,6 +24,12 @@ public function boot() OneLogStatic::setInstance($onelogService); GlobalNamespaceRegister::register('\\OneLog', OneLogStatic::class); } + + if (null !== ($middlewares = $this->container->getParameter('onelog.middlewares'))) { + foreach ($middlewares as $middleware) { + $this->container->get(MiddlewareProcessor::class)->registerMiddleware($this->container->get($middleware)); + } + } } public function build(ContainerBuilder $container) diff --git a/Resources/config/onelog.xml b/Resources/config/onelog.xml index db30c32..4f49178 100644 --- a/Resources/config/onelog.xml +++ b/Resources/config/onelog.xml @@ -6,27 +6,22 @@ > - + + - - - + - - + - - + - - + - - + diff --git a/Tests/DependencyInjection/ConfigurationTest.php b/Tests/DependencyInjection/ConfigurationTest.php index 91d7612..2551405 100644 --- a/Tests/DependencyInjection/ConfigurationTest.php +++ b/Tests/DependencyInjection/ConfigurationTest.php @@ -44,6 +44,7 @@ public function optionsProvider() 'register_global' => true, 'register_monolog_channels' => false, 'enable_request_id' => true, + 'middlewares' => [], ], ], 'default_configs' => [ @@ -53,6 +54,7 @@ public function optionsProvider() 'register_global' => false, 'register_monolog_channels' => false, 'enable_request_id' => true, + 'middlewares' => [], ], ], ];