From 583ff118ba99d95454f0ef3e866f26928993ed91 Mon Sep 17 00:00:00 2001 From: Maksym Novik Date: Thu, 7 Feb 2019 14:53:08 +0200 Subject: [PATCH 1/7] Implement exception logging #220. Created custom error handler; Applied default error handling functionality --- app/etc/di.xml | 1 + .../Framework/GraphQl/Query/ErrorHandler.php | 29 +++++++++++++++++++ .../GraphQl/Query/ErrorHandlerInterface.php | 26 +++++++++++++++++ .../GraphQl/Query/QueryProcessor.php | 20 ++++++++++--- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php create mode 100644 lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php diff --git a/app/etc/di.xml b/app/etc/di.xml index 6cf169c1d227..dc884cb9fe29 100755 --- a/app/etc/di.xml +++ b/app/etc/di.xml @@ -209,6 +209,7 @@ + diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php new file mode 100644 index 000000000000..9fc3f9dc584e --- /dev/null +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php @@ -0,0 +1,29 @@ +exceptionFormatter = $exceptionFormatter; $this->queryComplexityLimiter = $queryComplexityLimiter; + $this->errorHandler = $errorHandler; } /** @@ -67,6 +77,8 @@ public function process( $contextValue, $variableValues, $operationName + )->setErrorsHandler( + [$this->errorHandler, 'handle'] )->toArray( $this->exceptionFormatter->shouldShowDetail() ? \GraphQL\Error\Debug::INCLUDE_DEBUG_MESSAGE | \GraphQL\Error\Debug::INCLUDE_TRACE : false From 9027c50f7fa39c6bca79c8023e2191d441a1d937 Mon Sep 17 00:00:00 2001 From: Maksym Novik Date: Thu, 7 Feb 2019 15:39:40 +0200 Subject: [PATCH 2/7] Implement exception logging #220. Implemented client and server errors logging --- app/etc/di.xml | 58 +++++++++++++- .../Framework/GraphQl/Query/ErrorHandler.php | 75 ++++++++++++++++++- .../GraphQl/Query/ErrorHandlerInterface.php | 3 + 3 files changed, 134 insertions(+), 2 deletions(-) diff --git a/app/etc/di.xml b/app/etc/di.xml index dc884cb9fe29..ed9f32a1bf26 100755 --- a/app/etc/di.xml +++ b/app/etc/di.xml @@ -209,7 +209,6 @@ - @@ -1757,4 +1756,61 @@ + + + + GraphQLClientLogger + GraphQLServerLogger + GraphQLGeneralLogger + + \GraphQL\Error\Error::CATEGORY_GRAPHQL + \Magento\Framework\GraphQl\Exception\GraphQlAlreadyExistsException::EXCEPTION_CATEGORY + \Magento\Framework\GraphQl\Exception\GraphQlAuthenticationException::EXCEPTION_CATEGORY + \Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException::EXCEPTION_CATEGORY + \Magento\Framework\GraphQl\Exception\GraphQlInputException::EXCEPTION_CATEGORY + \Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException::EXCEPTION_CATEGORY + request + user + + + \GraphQL\Error\Error::CATEGORY_INTERNAL + + + + + + + GraphQLClientErrorHandler + + + + + + \Magento\Framework\GraphQl\Query\ErrorHandlerInterface::CLIENT_LOG_FILE + + + + + + GraphQLServerErrorHandler + + + + + + \Magento\Framework\GraphQl\Query\ErrorHandlerInterface::SERVER_LOG_FILE + + + + + + GraphQLGeneralErrorHandler + + + + + + \Magento\Framework\GraphQl\Query\ErrorHandlerInterface::GENERAL_LOG_FILE + + diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php index 9fc3f9dc584e..2f97ae238c6a 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php @@ -14,6 +14,56 @@ */ class ErrorHandler implements ErrorHandlerInterface { + /** + * @var \Magento\Framework\Logger\Monolog + */ + private $clientLogger; + + /** + * @var \Magento\Framework\Logger\Monolog + */ + private $serverLogger; + + /** + * @var array + */ + private $clientErrorCategories; + + /** + * @var array + */ + private $serverErrorCategories; + + /** + * @var \Magento\Framework\Logger\Monolog + */ + private $generalLogger; + + /** + * ErrorHandler constructor. + * + * @param \Magento\Framework\Logger\Monolog $clientLogger + * @param \Magento\Framework\Logger\Monolog $serverLogger + * @param \Magento\Framework\Logger\Monolog $generalLogger + * @param array $clientErrorCategories + * @param array $serverErrorCategories + * + * @SuppressWarnings(PHPMD.LongVariable) + */ + public function __construct( + \Magento\Framework\Logger\Monolog $clientLogger, + \Magento\Framework\Logger\Monolog $serverLogger, + \Magento\Framework\Logger\Monolog $generalLogger, + array $clientErrorCategories = [], + array $serverErrorCategories = [] + ) { + $this->clientLogger = $clientLogger; + $this->serverLogger = $serverLogger; + $this->generalLogger = $generalLogger; + $this->clientErrorCategories = $clientErrorCategories; + $this->serverErrorCategories = $serverErrorCategories; + } + /** * Handle errors * @@ -24,6 +74,29 @@ class ErrorHandler implements ErrorHandlerInterface */ public function handle(array $errors, callable $formatter):array { - return array_map($formatter, $errors); + return array_map( + function (\GraphQL\Error\ClientAware $error) use ($formatter) { + $this->logError($error); + + return $formatter($error); + }, + $errors + ); + } + + /** + * @param \GraphQL\Error\ClientAware $error + * + * @return boolean + */ + private function logError(\GraphQL\Error\ClientAware $error):bool + { + if (in_array($error->getCategory(), $this->clientErrorCategories)) { + return $this->clientLogger->error($error); + } elseif (in_array($error->getCategory(), $this->serverErrorCategories)) { + return $this->serverLogger->error($error); + } + + return $this->generalLogger->error($error); } } diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php index f1123864f4af..f63468fa4ddb 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php @@ -14,6 +14,9 @@ */ interface ErrorHandlerInterface { + const SERVER_LOG_FILE = 'var/log/graphql/server/exception.log'; + const CLIENT_LOG_FILE = 'var/log/graphql/client/exception.log'; + const GENERAL_LOG_FILE = 'var/log/graphql/exception.log'; /** * Handle errors * From d40388edad3e5c812bb455628795172f412845a3 Mon Sep 17 00:00:00 2001 From: Maksym Novik Date: Sat, 22 Jun 2019 12:11:45 +0300 Subject: [PATCH 3/7] GraphQl-220: Implement exception logging #355. Cleaned up code. --- .../Framework/GraphQl/Query/ErrorHandler.php | 38 ++++++++++--------- .../GraphQl/Query/ErrorHandlerInterface.php | 4 +- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php index 2f97ae238c6a..fb5e921e72f6 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php @@ -7,6 +7,10 @@ namespace Magento\Framework\GraphQl\Query; +use GraphQL\Error\ClientAware; +use GraphQL\Error\Error; +use Magento\Framework\Logger\Monolog; + /** * Class ErrorHandler * @@ -15,12 +19,12 @@ class ErrorHandler implements ErrorHandlerInterface { /** - * @var \Magento\Framework\Logger\Monolog + * @var Monolog */ private $clientLogger; /** - * @var \Magento\Framework\Logger\Monolog + * @var Monolog */ private $serverLogger; @@ -35,25 +39,25 @@ class ErrorHandler implements ErrorHandlerInterface private $serverErrorCategories; /** - * @var \Magento\Framework\Logger\Monolog + * @var Monolog */ private $generalLogger; /** * ErrorHandler constructor. * - * @param \Magento\Framework\Logger\Monolog $clientLogger - * @param \Magento\Framework\Logger\Monolog $serverLogger - * @param \Magento\Framework\Logger\Monolog $generalLogger - * @param array $clientErrorCategories - * @param array $serverErrorCategories + * @param Monolog $clientLogger + * @param Monolog $serverLogger + * @param Monolog $generalLogger + * @param array $clientErrorCategories + * @param array $serverErrorCategories * * @SuppressWarnings(PHPMD.LongVariable) */ public function __construct( - \Magento\Framework\Logger\Monolog $clientLogger, - \Magento\Framework\Logger\Monolog $serverLogger, - \Magento\Framework\Logger\Monolog $generalLogger, + Monolog $clientLogger, + Monolog $serverLogger, + Monolog $generalLogger, array $clientErrorCategories = [], array $serverErrorCategories = [] ) { @@ -67,15 +71,15 @@ public function __construct( /** * Handle errors * - * @param \GraphQL\Error\Error[] $errors - * @param callable $formatter + * @param Error[] $errors + * @param callable $formatter * * @return array */ - public function handle(array $errors, callable $formatter):array + public function handle(array $errors, callable $formatter): array { return array_map( - function (\GraphQL\Error\ClientAware $error) use ($formatter) { + function (ClientAware $error) use ($formatter) { $this->logError($error); return $formatter($error); @@ -85,11 +89,11 @@ function (\GraphQL\Error\ClientAware $error) use ($formatter) { } /** - * @param \GraphQL\Error\ClientAware $error + * @param ClientAware $error * * @return boolean */ - private function logError(\GraphQL\Error\ClientAware $error):bool + private function logError(ClientAware $error): bool { if (in_array($error->getCategory(), $this->clientErrorCategories)) { return $this->clientLogger->error($error); diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php index f63468fa4ddb..dbb149a86574 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php @@ -7,6 +7,8 @@ namespace Magento\Framework\GraphQl\Query; +use GraphQL\Error\Error; + /** * Interface ErrorHandlerInterface * @@ -20,7 +22,7 @@ interface ErrorHandlerInterface /** * Handle errors * - * @param \GraphQL\Error\Error[] $errors + * @param Error[] $errors * @param callable $formatter * * @return array From 6a5c7e2f52aac7af3378270e69604ecb2da21695 Mon Sep 17 00:00:00 2001 From: Maksym Novik Date: Sat, 22 Jun 2019 13:19:54 +0300 Subject: [PATCH 4/7] GraphQl-220: Implement exception logging #355. Moved DI to graphql area; Create ResolveLogger service; Use ClientAvare->isClientSafe() to divide exceptions into client and server --- app/etc/di.xml | 57 -------------- app/etc/graphql/di.xml | 41 ++++++++++ .../Framework/GraphQl/Query/ErrorHandler.php | 77 +++---------------- .../GraphQl/Query/ErrorHandlerInterface.php | 13 ++-- .../GraphQl/Query/Resolver/ResolveLogger.php | 49 ++++++++++++ .../Query/Resolver/ResolveLoggerInterface.php | 28 +++++++ 6 files changed, 136 insertions(+), 129 deletions(-) create mode 100644 app/etc/graphql/di.xml create mode 100644 lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php create mode 100644 lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php diff --git a/app/etc/di.xml b/app/etc/di.xml index 21cdea851063..200a56201239 100755 --- a/app/etc/di.xml +++ b/app/etc/di.xml @@ -1768,61 +1768,4 @@ - - - - GraphQLClientLogger - GraphQLServerLogger - GraphQLGeneralLogger - - \GraphQL\Error\Error::CATEGORY_GRAPHQL - \Magento\Framework\GraphQl\Exception\GraphQlAlreadyExistsException::EXCEPTION_CATEGORY - \Magento\Framework\GraphQl\Exception\GraphQlAuthenticationException::EXCEPTION_CATEGORY - \Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException::EXCEPTION_CATEGORY - \Magento\Framework\GraphQl\Exception\GraphQlInputException::EXCEPTION_CATEGORY - \Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException::EXCEPTION_CATEGORY - request - user - - - \GraphQL\Error\Error::CATEGORY_INTERNAL - - - - - - - GraphQLClientErrorHandler - - - - - - \Magento\Framework\GraphQl\Query\ErrorHandlerInterface::CLIENT_LOG_FILE - - - - - - GraphQLServerErrorHandler - - - - - - \Magento\Framework\GraphQl\Query\ErrorHandlerInterface::SERVER_LOG_FILE - - - - - - GraphQLGeneralErrorHandler - - - - - - \Magento\Framework\GraphQl\Query\ErrorHandlerInterface::GENERAL_LOG_FILE - - diff --git a/app/etc/graphql/di.xml b/app/etc/graphql/di.xml new file mode 100644 index 000000000000..57b5687c660c --- /dev/null +++ b/app/etc/graphql/di.xml @@ -0,0 +1,41 @@ + + + + + + + GraphQLClientLogger + GraphQLServerLogger + + + + + + GraphQLClientErrorHandler + + + + + + Magento\Framework\GraphQl\Query\ErrorHandler::CLIENT_LOG_FILE + + + + + + GraphQLServerErrorHandler + + + + + + Magento\Framework\GraphQl\Query\ErrorHandler::SERVER_LOG_FILE + + + + diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php index fb5e921e72f6..921314a50bef 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php @@ -8,99 +8,44 @@ namespace Magento\Framework\GraphQl\Query; use GraphQL\Error\ClientAware; -use GraphQL\Error\Error; -use Magento\Framework\Logger\Monolog; +use Magento\Framework\GraphQl\Query\Resolver\ResolveLoggerInterface; /** - * Class ErrorHandler + * @inheritDoc * * @package Magento\Framework\GraphQl\Query */ class ErrorHandler implements ErrorHandlerInterface { - /** - * @var Monolog - */ - private $clientLogger; - - /** - * @var Monolog - */ - private $serverLogger; + const SERVER_LOG_FILE = 'var/log/graphql/server/exception.log'; + const CLIENT_LOG_FILE = 'var/log/graphql/client/exception.log'; /** - * @var array + * @var ResolveLoggerInterface */ - private $clientErrorCategories; + private $resolveLogger; /** - * @var array - */ - private $serverErrorCategories; - - /** - * @var Monolog - */ - private $generalLogger; - - /** - * ErrorHandler constructor. - * - * @param Monolog $clientLogger - * @param Monolog $serverLogger - * @param Monolog $generalLogger - * @param array $clientErrorCategories - * @param array $serverErrorCategories - * - * @SuppressWarnings(PHPMD.LongVariable) + * @param ResolveLoggerInterface $resolveLogger */ public function __construct( - Monolog $clientLogger, - Monolog $serverLogger, - Monolog $generalLogger, - array $clientErrorCategories = [], - array $serverErrorCategories = [] + ResolveLoggerInterface $resolveLogger ) { - $this->clientLogger = $clientLogger; - $this->serverLogger = $serverLogger; - $this->generalLogger = $generalLogger; - $this->clientErrorCategories = $clientErrorCategories; - $this->serverErrorCategories = $serverErrorCategories; + $this->resolveLogger = $resolveLogger; } /** - * Handle errors - * - * @param Error[] $errors - * @param callable $formatter - * - * @return array + * @inheritDoc */ public function handle(array $errors, callable $formatter): array { return array_map( function (ClientAware $error) use ($formatter) { - $this->logError($error); + $this->resolveLogger->execute($error)->error($error); return $formatter($error); }, $errors ); } - - /** - * @param ClientAware $error - * - * @return boolean - */ - private function logError(ClientAware $error): bool - { - if (in_array($error->getCategory(), $this->clientErrorCategories)) { - return $this->clientLogger->error($error); - } elseif (in_array($error->getCategory(), $this->serverErrorCategories)) { - return $this->serverLogger->error($error); - } - - return $this->generalLogger->error($error); - } } diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php index dbb149a86574..b89207fe3bdb 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandlerInterface.php @@ -12,20 +12,21 @@ /** * Interface ErrorHandlerInterface * - * @package Magento\Framework\GraphQl\Query + * GraphQL error handler + * + * @see \Magento\Framework\GraphQl\Query\QueryProcessor + * + * @api */ interface ErrorHandlerInterface { - const SERVER_LOG_FILE = 'var/log/graphql/server/exception.log'; - const CLIENT_LOG_FILE = 'var/log/graphql/client/exception.log'; - const GENERAL_LOG_FILE = 'var/log/graphql/exception.log'; /** * Handle errors * * @param Error[] $errors - * @param callable $formatter + * @param callable $formatter * * @return array */ - public function handle(array $errors, callable $formatter):array; + public function handle(array $errors, callable $formatter): array; } diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php new file mode 100644 index 000000000000..98e4f85b7612 --- /dev/null +++ b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php @@ -0,0 +1,49 @@ +clientLogger = $clientLogger; + $this->serverLogger = $serverLogger; + } + + /** + * @inheritDoc + */ + public function execute(ClientAware $clientAware): LoggerInterface + { + return $clientAware->isClientSafe() ? + $this->clientLogger : + $this->serverLogger; + } +} diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php new file mode 100644 index 000000000000..ade416a3093b --- /dev/null +++ b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php @@ -0,0 +1,28 @@ + Date: Sun, 7 Jul 2019 18:31:10 +0300 Subject: [PATCH 5/7] GraphQl-220: Implement exception logging. Stopped using arguments with the same type --- app/etc/graphql/di.xml | 8 +-- .../Framework/GraphQl/Query/ErrorHandler.php | 14 +++--- .../GraphQl/Query/Resolver/LoggerFactory.php | 39 +++++++++++++++ ...terface.php => LoggerFactoryInterface.php} | 4 +- .../GraphQl/Query/Resolver/ResolveLogger.php | 49 ------------------- 5 files changed, 49 insertions(+), 65 deletions(-) create mode 100644 lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php rename lib/internal/Magento/Framework/GraphQl/Query/Resolver/{ResolveLoggerInterface.php => LoggerFactoryInterface.php} (82%) delete mode 100644 lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php diff --git a/app/etc/graphql/di.xml b/app/etc/graphql/di.xml index 57b5687c660c..474266bb9eff 100644 --- a/app/etc/graphql/di.xml +++ b/app/etc/graphql/di.xml @@ -7,12 +7,7 @@ --> - - - GraphQLClientLogger - GraphQLServerLogger - - + @@ -37,5 +32,4 @@ Magento\Framework\GraphQl\Query\ErrorHandler::SERVER_LOG_FILE - diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php index 921314a50bef..874f71428493 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php @@ -8,7 +8,7 @@ namespace Magento\Framework\GraphQl\Query; use GraphQL\Error\ClientAware; -use Magento\Framework\GraphQl\Query\Resolver\ResolveLoggerInterface; +use Magento\Framework\GraphQl\Query\Resolver\LoggerFactoryInterface; /** * @inheritDoc @@ -21,17 +21,17 @@ class ErrorHandler implements ErrorHandlerInterface const CLIENT_LOG_FILE = 'var/log/graphql/client/exception.log'; /** - * @var ResolveLoggerInterface + * @var LoggerFactoryInterface */ - private $resolveLogger; + private $loggerFactory; /** - * @param ResolveLoggerInterface $resolveLogger + * @param LoggerFactoryInterface $loggerFactory */ public function __construct( - ResolveLoggerInterface $resolveLogger + LoggerFactoryInterface $loggerFactory ) { - $this->resolveLogger = $resolveLogger; + $this->loggerFactory = $loggerFactory; } /** @@ -41,7 +41,7 @@ public function handle(array $errors, callable $formatter): array { return array_map( function (ClientAware $error) use ($formatter) { - $this->resolveLogger->execute($error)->error($error); + $this->loggerFactory->getLogger($error)->error($error); return $formatter($error); }, diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php new file mode 100644 index 000000000000..2b35b5398110 --- /dev/null +++ b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php @@ -0,0 +1,39 @@ +objectManager = $objectManager; + } + + /** + * @inheritDoc + */ + public function getLogger(ClientAware $clientAware): LoggerInterface + { + return $clientAware->isClientSafe() ? + $this->objectManager->get('GraphQLClientLogger') : + $this->objectManager->get('GraphQLServerLogger'); + } +} diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php similarity index 82% rename from lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php rename to lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php index ade416a3093b..778fb61db994 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLoggerInterface.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php @@ -15,7 +15,7 @@ * * @api */ -interface ResolveLoggerInterface +interface LoggerFactoryInterface { /** * Get logger to use for certain ClientAware exception @@ -24,5 +24,5 @@ interface ResolveLoggerInterface * * @return LoggerInterface */ - public function execute(ClientAware $clientAware): LoggerInterface; + public function getLogger(ClientAware $clientAware): LoggerInterface; } diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php deleted file mode 100644 index 98e4f85b7612..000000000000 --- a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ResolveLogger.php +++ /dev/null @@ -1,49 +0,0 @@ -clientLogger = $clientLogger; - $this->serverLogger = $serverLogger; - } - - /** - * @inheritDoc - */ - public function execute(ClientAware $clientAware): LoggerInterface - { - return $clientAware->isClientSafe() ? - $this->clientLogger : - $this->serverLogger; - } -} From 9553775b6294b9149a6b5bbe35ce4f2791e36073 Mon Sep 17 00:00:00 2001 From: Maksym Novik Date: Wed, 28 Aug 2019 18:51:43 +0300 Subject: [PATCH 6/7] GraphQl-220: Implement exception logging. Removed client errors logging. --- app/etc/graphql/di.xml | 22 ++++------- .../Framework/GraphQl/Query/ErrorHandler.php | 17 ++++---- .../GraphQl/Query/Resolver/LoggerFactory.php | 39 ------------------- .../Query/Resolver/LoggerFactoryInterface.php | 28 ------------- 4 files changed, 14 insertions(+), 92 deletions(-) delete mode 100644 lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php delete mode 100644 lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php diff --git a/app/etc/graphql/di.xml b/app/etc/graphql/di.xml index 474266bb9eff..4370c3b445f6 100644 --- a/app/etc/graphql/di.xml +++ b/app/etc/graphql/di.xml @@ -7,29 +7,21 @@ --> - - + - GraphQLClientErrorHandler + GraphQlErrorHandler - + - Magento\Framework\GraphQl\Query\ErrorHandler::CLIENT_LOG_FILE + var/log/graphql/exception.log - + - - GraphQLServerErrorHandler - - - - - - Magento\Framework\GraphQl\Query\ErrorHandler::SERVER_LOG_FILE + GraphQlLogger - + diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php index 874f71428493..2661034116f9 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ErrorHandler.php @@ -8,7 +8,7 @@ namespace Magento\Framework\GraphQl\Query; use GraphQL\Error\ClientAware; -use Magento\Framework\GraphQl\Query\Resolver\LoggerFactoryInterface; +use Psr\Log\LoggerInterface; /** * @inheritDoc @@ -17,21 +17,18 @@ */ class ErrorHandler implements ErrorHandlerInterface { - const SERVER_LOG_FILE = 'var/log/graphql/server/exception.log'; - const CLIENT_LOG_FILE = 'var/log/graphql/client/exception.log'; - /** - * @var LoggerFactoryInterface + * @var LoggerInterface */ - private $loggerFactory; + private $logger; /** - * @param LoggerFactoryInterface $loggerFactory + * @param LoggerInterface $logger */ public function __construct( - LoggerFactoryInterface $loggerFactory + LoggerInterface $logger ) { - $this->loggerFactory = $loggerFactory; + $this->logger = $logger; } /** @@ -41,7 +38,7 @@ public function handle(array $errors, callable $formatter): array { return array_map( function (ClientAware $error) use ($formatter) { - $this->loggerFactory->getLogger($error)->error($error); + $this->logger->error($error); return $formatter($error); }, diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php deleted file mode 100644 index 2b35b5398110..000000000000 --- a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactory.php +++ /dev/null @@ -1,39 +0,0 @@ -objectManager = $objectManager; - } - - /** - * @inheritDoc - */ - public function getLogger(ClientAware $clientAware): LoggerInterface - { - return $clientAware->isClientSafe() ? - $this->objectManager->get('GraphQLClientLogger') : - $this->objectManager->get('GraphQLServerLogger'); - } -} diff --git a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php deleted file mode 100644 index 778fb61db994..000000000000 --- a/lib/internal/Magento/Framework/GraphQl/Query/Resolver/LoggerFactoryInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - Date: Fri, 6 Sep 2019 18:46:07 +0300 Subject: [PATCH 7/7] GraphQl-220: Implement exception logging. Removed duplicated logging to var/log/graphql. --- app/etc/graphql/di.xml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/app/etc/graphql/di.xml b/app/etc/graphql/di.xml index 4370c3b445f6..aba60d00080f 100644 --- a/app/etc/graphql/di.xml +++ b/app/etc/graphql/di.xml @@ -7,21 +7,4 @@ --> - - - - GraphQlErrorHandler - - - - - - var/log/graphql/exception.log - - - - - GraphQlLogger - -