From 5970ef6e367070573a68b61d4eb29d58fb03969b Mon Sep 17 00:00:00 2001 From: Maxime AURIAU Date: Mon, 1 Oct 2018 17:38:13 +0200 Subject: [PATCH 1/4] Log errors from graphQl result --- .../OverblogGraphQLExtension.php | 2 +- src/EventListener/ErrorHandlerListener.php | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/DependencyInjection/OverblogGraphQLExtension.php b/src/DependencyInjection/OverblogGraphQLExtension.php index bcef047d4..5cdb753b2 100644 --- a/src/DependencyInjection/OverblogGraphQLExtension.php +++ b/src/DependencyInjection/OverblogGraphQLExtension.php @@ -187,7 +187,7 @@ private function setErrorHandler(array $config, ContainerBuilder $container): vo $errorHandlerListenerDefinition = $container->setDefinition(ErrorHandlerListener::class, new Definition(ErrorHandlerListener::class)); $errorHandlerListenerDefinition->setPublic(true) - ->setArguments([new Reference($id), $config['errors_handler']['rethrow_internal_exceptions'], $config['errors_handler']['debug']]) + ->setArguments([new Reference($id), new Reference(ErrorHandlerListener::DEFAULT_LOGGER_SERVICE), $config['errors_handler']['rethrow_internal_exceptions'], $config['errors_handler']['debug']]) ->addTag('kernel.event_listener', ['event' => Events::POST_EXECUTOR, 'method' => 'onPostExecutor']) ; diff --git a/src/EventListener/ErrorHandlerListener.php b/src/EventListener/ErrorHandlerListener.php index 32071e43e..6253ed8fb 100644 --- a/src/EventListener/ErrorHandlerListener.php +++ b/src/EventListener/ErrorHandlerListener.php @@ -6,9 +6,13 @@ use Overblog\GraphQLBundle\Error\ErrorHandler; use Overblog\GraphQLBundle\Event\ExecutorResultEvent; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; final class ErrorHandlerListener { + public const DEFAULT_LOGGER_SERVICE = 'logger'; + /** @var ErrorHandler */ private $errorHandler; @@ -18,16 +22,29 @@ final class ErrorHandlerListener /** @var bool */ private $debug; - public function __construct(ErrorHandler $errorHandler, $throwException = false, $debug = false) - { + /** @var LoggerInterface */ + private $logger; + + public function __construct( + ErrorHandler $errorHandler, + LoggerInterface $logger, + bool $throwException = false, + bool $debug = false + ) { $this->errorHandler = $errorHandler; $this->throwException = $throwException; $this->debug = $debug; + $this->logger = null === $logger ? new NullLogger() : $logger; } public function onPostExecutor(ExecutorResultEvent $executorResultEvent): void { $result = $executorResultEvent->getResult(); $this->errorHandler->handleErrors($result, $this->throwException, $this->debug); + $result = $result->toArray(); + + if (isset($result['errors'])) { + $this->logger->error(__METHOD__.' : '.\json_encode($result['errors'])); + } } } From 7d76fff4b0716598ad9d7b250217f2ca7b3ed2a2 Mon Sep 17 00:00:00 2001 From: Maxime AURIAU Date: Tue, 13 Nov 2018 15:06:12 +0100 Subject: [PATCH 2/4] [ADD] - errorLevel in config off errorHandler --- src/DependencyInjection/OverblogGraphQLExtension.php | 2 +- src/EventListener/ErrorHandlerListener.php | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/DependencyInjection/OverblogGraphQLExtension.php b/src/DependencyInjection/OverblogGraphQLExtension.php index 5cdb753b2..d05043af6 100644 --- a/src/DependencyInjection/OverblogGraphQLExtension.php +++ b/src/DependencyInjection/OverblogGraphQLExtension.php @@ -187,7 +187,7 @@ private function setErrorHandler(array $config, ContainerBuilder $container): vo $errorHandlerListenerDefinition = $container->setDefinition(ErrorHandlerListener::class, new Definition(ErrorHandlerListener::class)); $errorHandlerListenerDefinition->setPublic(true) - ->setArguments([new Reference($id), new Reference(ErrorHandlerListener::DEFAULT_LOGGER_SERVICE), $config['errors_handler']['rethrow_internal_exceptions'], $config['errors_handler']['debug']]) + ->setArguments([new Reference($id), new Reference(ErrorHandlerListener::DEFAULT_LOGGER_SERVICE), $config['errors_handler']['rethrow_internal_exceptions'], $config['errors_handler']['debug'], $config['errors_handler']['log_level']]) ->addTag('kernel.event_listener', ['event' => Events::POST_EXECUTOR, 'method' => 'onPostExecutor']) ; diff --git a/src/EventListener/ErrorHandlerListener.php b/src/EventListener/ErrorHandlerListener.php index 6253ed8fb..248326d12 100644 --- a/src/EventListener/ErrorHandlerListener.php +++ b/src/EventListener/ErrorHandlerListener.php @@ -7,6 +7,7 @@ use Overblog\GraphQLBundle\Error\ErrorHandler; use Overblog\GraphQLBundle\Event\ExecutorResultEvent; use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; use Psr\Log\NullLogger; final class ErrorHandlerListener @@ -25,16 +26,21 @@ final class ErrorHandlerListener /** @var LoggerInterface */ private $logger; + /** @var string */ + private $errorLevel; + public function __construct( ErrorHandler $errorHandler, LoggerInterface $logger, bool $throwException = false, - bool $debug = false + bool $debug = false, + string $errorLevel = LogLevel::ERROR ) { $this->errorHandler = $errorHandler; $this->throwException = $throwException; $this->debug = $debug; $this->logger = null === $logger ? new NullLogger() : $logger; + $this->errorLevel = $errorLevel; } public function onPostExecutor(ExecutorResultEvent $executorResultEvent): void @@ -44,7 +50,7 @@ public function onPostExecutor(ExecutorResultEvent $executorResultEvent): void $result = $result->toArray(); if (isset($result['errors'])) { - $this->logger->error(__METHOD__.' : '.\json_encode($result['errors'])); + $this->logger->{$this->errorLevel}(__METHOD__.' : '.\json_encode($result['errors'])); } } } From 9bccaa28a756ec70170f41949c1f5f9aa25e634b Mon Sep 17 00:00:00 2001 From: Maxime AURIAU Date: Tue, 13 Nov 2018 16:53:38 +0100 Subject: [PATCH 3/4] Fix tests --- src/DependencyInjection/Configuration.php | 2 ++ src/EventListener/ErrorHandlerListener.php | 2 +- tests/DependencyInjection/OverblogGraphQLTypesExtensionTest.php | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 75b2c0e1c..fb4244409 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -9,6 +9,7 @@ use Overblog\GraphQLBundle\Error\ErrorHandler; use Overblog\GraphQLBundle\EventListener\ErrorLoggerListener; use Overblog\GraphQLBundle\Resolver\Resolver; +use Psr\Log\LogLevel; use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; use Symfony\Component\Config\Definition\Builder\EnumNodeDefinition; use Symfony\Component\Config\Definition\Builder\ScalarNodeDefinition; @@ -86,6 +87,7 @@ private function errorsHandlerSection() ->booleanNode('log')->defaultTrue()->end() ->scalarNode('logger_service')->defaultValue(ErrorLoggerListener::DEFAULT_LOGGER_SERVICE)->end() ->booleanNode('map_exceptions_to_parent')->defaultFalse()->end() + ->scalarNode('log_level')->defaultValue(LogLevel::DEBUG)->end() ->arrayNode('exceptions') ->addDefaultsIfNotSet() ->children() diff --git a/src/EventListener/ErrorHandlerListener.php b/src/EventListener/ErrorHandlerListener.php index 248326d12..2ace51da7 100644 --- a/src/EventListener/ErrorHandlerListener.php +++ b/src/EventListener/ErrorHandlerListener.php @@ -34,7 +34,7 @@ public function __construct( LoggerInterface $logger, bool $throwException = false, bool $debug = false, - string $errorLevel = LogLevel::ERROR + string $errorLevel = LogLevel::DEBUG ) { $this->errorHandler = $errorHandler; $this->throwException = $throwException; diff --git a/tests/DependencyInjection/OverblogGraphQLTypesExtensionTest.php b/tests/DependencyInjection/OverblogGraphQLTypesExtensionTest.php index 0ae4ac464..d4500da97 100644 --- a/tests/DependencyInjection/OverblogGraphQLTypesExtensionTest.php +++ b/tests/DependencyInjection/OverblogGraphQLTypesExtensionTest.php @@ -12,6 +12,7 @@ use Overblog\GraphQLBundle\Tests\DependencyInjection\Builder\PagerArgs; use Overblog\GraphQLBundle\Tests\DependencyInjection\Builder\RawIdField; use PHPUnit\Framework\TestCase; +use Psr\Log\LogLevel; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Routing\Exception\ResourceNotFoundException; @@ -97,6 +98,7 @@ public function testCustomExceptions(): void \InvalidArgumentException::class, ], ], + 'log_level' => LogLevel::DEBUG, ], ], ], From 05b4765f66ecad62f0ee35dbee0ebba62248cfd9 Mon Sep 17 00:00:00 2001 From: Jeremiah VALERIE Date: Thu, 21 Mar 2019 15:08:46 +0100 Subject: [PATCH 4/4] Update src/EventListener/ErrorHandlerListener.php Co-Authored-By: mauriau --- src/EventListener/ErrorHandlerListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EventListener/ErrorHandlerListener.php b/src/EventListener/ErrorHandlerListener.php index 2ace51da7..195d5dfa8 100644 --- a/src/EventListener/ErrorHandlerListener.php +++ b/src/EventListener/ErrorHandlerListener.php @@ -50,7 +50,7 @@ public function onPostExecutor(ExecutorResultEvent $executorResultEvent): void $result = $result->toArray(); if (isset($result['errors'])) { - $this->logger->{$this->errorLevel}(__METHOD__.' : '.\json_encode($result['errors'])); + $this->logger->{$this->errorLevel}('GraphQL request resulted with an error.', $result['errors']); } } }