vendor/3slab/vdm-library-bundle/EventSubscriber/Trace/TraceAddExitSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. /**
  3.  * @package    3slab/VdmLibraryBundle
  4.  * @copyright  2020 Suez Smart Solutions 3S.lab
  5.  * @license    https://github.com/3slab/VdmLibraryBundle/blob/master/LICENSE
  6.  */
  7. namespace Vdm\Bundle\LibraryBundle\EventSubscriber\Trace;
  8. use Vdm\Bundle\LibraryBundle\Model\Trace;
  9. use Psr\Log\LoggerInterface;
  10. use Psr\Log\NullLogger;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\Messenger\Event\SendMessageToTransportsEvent;
  13. use Vdm\Bundle\LibraryBundle\Model\TraceableMessageInterface;
  14. class TraceAddExitSubscriber implements EventSubscriberInterface
  15. {
  16.     /**
  17.      * @var string
  18.      */
  19.     private $appName;
  20.     /**
  21.      * @var LoggerInterface|null
  22.      */
  23.     private $logger;
  24.     /**
  25.      * TraceAddExitSubscriber constructor.
  26.      *
  27.      * @param string $appName
  28.      * @param LoggerInterface|null $vdmLogger
  29.      */
  30.     public function __construct(string $appNameLoggerInterface $vdmLogger null)
  31.     {
  32.         $this->appName $appName;
  33.         $this->logger $vdmLogger ?? new NullLogger();
  34.     }
  35.     /**
  36.      * Method executed on SendMessageToTransportsEvent event
  37.      *
  38.      * @param SendMessageToTransportsEvent $event
  39.      */
  40.     public function onSendMessageToTransportEvent(SendMessageToTransportsEvent $event)
  41.     {
  42.         $message $event->getEnvelope()->getMessage();
  43.         if (!$message instanceof TraceableMessageInterface) {
  44.             $this->logger->debug(
  45.                 'Trace {traceType} not added as message does not implement TraceableMessageInterface',
  46.                 ['traceType' => Trace::ENTER]
  47.             );
  48.             return;
  49.         }
  50.         $message->addTrace(new Trace($this->appNameTrace::EXIT));
  51.         $this->logger->debug('Trace {traceType} added to message with name {traceName}', [
  52.             'traceName' => $this->appName,
  53.             'traceType' => Trace::EXIT
  54.         ]);
  55.     }
  56.     /**
  57.      * {@inheritDoc}
  58.      * @codeCoverageIgnore
  59.      */
  60.     public static function getSubscribedEvents()
  61.     {
  62.         return [
  63.             SendMessageToTransportsEvent::class => 'onSendMessageToTransportEvent',
  64.         ];
  65.     }
  66. }