From a386a0ed22a65702520818dbb34e00866a19b791 Mon Sep 17 00:00:00 2001 From: Maksim Kotlyar Date: Thu, 14 Dec 2017 14:31:06 +0200 Subject: [PATCH 1/2] [consumption] Add ability to overwrite logger. --- .../Consumption/Extension/LoggerExtension.php | 12 ++++++++-- .../Extension/LoggerExtensionTest.php | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/pkg/enqueue/Consumption/Extension/LoggerExtension.php b/pkg/enqueue/Consumption/Extension/LoggerExtension.php index 1322c28af..36cf01b8a 100644 --- a/pkg/enqueue/Consumption/Extension/LoggerExtension.php +++ b/pkg/enqueue/Consumption/Extension/LoggerExtension.php @@ -31,8 +31,16 @@ public function __construct(LoggerInterface $logger) */ public function onStart(Context $context) { - $context->setLogger($this->logger); - $this->logger->debug(sprintf('Set context\'s logger %s', get_class($this->logger))); + if ($context->getLogger()) { + $context->getLogger()->debug(sprintf( + 'Skip setting context\'s logger "%s". Another one "%s" has already been set.', + get_class($context->getLogger()), + get_class($this->logger) + )); + } else { + $context->setLogger($this->logger); + $this->logger->debug(sprintf('Set context\'s logger "%s"', get_class($this->logger))); + } } /** diff --git a/pkg/enqueue/Tests/Consumption/Extension/LoggerExtensionTest.php b/pkg/enqueue/Tests/Consumption/Extension/LoggerExtensionTest.php index 0414a92f8..68bc7003f 100644 --- a/pkg/enqueue/Tests/Consumption/Extension/LoggerExtensionTest.php +++ b/pkg/enqueue/Tests/Consumption/Extension/LoggerExtensionTest.php @@ -151,6 +151,29 @@ public function testShouldNotLogAckMessageStatusIfReasonIsEmpty() $extension->onPostReceived($context); } + public function testShouldNotSetLoggerIfOneHasBeenSetOnStart() + { + $logger = $this->createLogger(); + + $alreadySetLogger = $this->createLogger(); + $alreadySetLogger + ->expects($this->once()) + ->method('debug') + ->with(sprintf( + 'Skip setting context\'s logger "%s". Another one "%s" has already been set.', + get_class($logger), + get_class($alreadySetLogger) + )) + ; + + $extension = new LoggerExtension($logger); + + $context = new Context($this->createPsrContextMock()); + $context->setLogger($alreadySetLogger); + + $extension->onStart($context); + } + /** * @return \PHPUnit_Framework_MockObject_MockObject|PsrContext */ From 39330b3a8114e495fe9a0e2f907b102b75e16c00 Mon Sep 17 00:00:00 2001 From: Maksim Kotlyar Date: Thu, 14 Dec 2017 14:57:11 +0200 Subject: [PATCH 2/2] [doc][skip ci] Add cookbook on how to change consume command logger. --- .../how-to-change-consume-command-logger.md | 28 +++++++++++++++++++ docs/index.md | 5 ++++ 2 files changed, 33 insertions(+) create mode 100644 docs/cookbook/symfony/how-to-change-consume-command-logger.md diff --git a/docs/cookbook/symfony/how-to-change-consume-command-logger.md b/docs/cookbook/symfony/how-to-change-consume-command-logger.md new file mode 100644 index 000000000..fee102023 --- /dev/null +++ b/docs/cookbook/symfony/how-to-change-consume-command-logger.md @@ -0,0 +1,28 @@ +# How to change consume command logger + +By default `bin/console enqueue:consume` (or `bin/console enqueue:transport:consume`) command prints messages to output. +The amount of info could be controlled by verbosity option (-v, -vv, -vvv). + +In order to change the default logger used by a command you have to register a `LoggerExtension` just before the default one. +The extension asks you for a logger service, so just pass the one you want to use. +Here's how you can do it. + +```yaml +// config/services.yaml + +services: + app_logger_extension: + class: 'Enqueue\Consumption\Extension\LoggerExtension' + public: false + arguments: ['@logger'] + tags: + - { name: 'enqueue.consumption.extension', priority: 255 } + +``` + +The logger extension with the highest priority will set its logger. + +[back to index](../index.md) + + + diff --git a/docs/index.md b/docs/index.md index 3148c42ab..9e6bd16b7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -51,6 +51,11 @@ * [Development](#development) - [Contribution](contribution.md) +## Cookbook + +* [Symfony](#symfony-cookbook) + - [How to change consume command logger](cookbook/symfony/how-to-change-consume-command-logger.md) + # Blogs * [Getting Started with RabbitMQ in PHP](https://blog.forma-pro.com/getting-started-with-rabbitmq-in-php-84d331e20a66)