From 23b22556e73746a0d8f491f4e70588dd1442fd72 Mon Sep 17 00:00:00 2001 From: Jay Potter Date: Wed, 12 Aug 2026 14:31:33 -0400 Subject: [PATCH] add addLoggerSubscription method --- src/Potter/Logger/Behaviour.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/Potter/Logger/Behaviour.php b/src/Potter/Logger/Behaviour.php index ec4a75d..dad0b3c 100644 --- a/src/Potter/Logger/Behaviour.php +++ b/src/Potter/Logger/Behaviour.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace Potter\Logger; use \Potter\Container; +use \Potter\Event\Event; trait Behaviour { @@ -23,6 +24,7 @@ trait Behaviour private static function addLoggerBehaviour(Container $container): void { self::addLogger($container); + self::addLoggerSubscription($container); } private static function addLoggerHandler(Container $container): void @@ -34,6 +36,30 @@ trait Behaviour ->addArgument(\Potter\Console\Logger::class); } + private static function addLoggerSubscription(Container $container): void + { + if (!static::hasDispatcher($container)) { + return; + } + $dispatcher = static::getDispatcher($container); + + $dispatcher->subscribeTo('applicationStart', function (Event $event) { + $container = $event->getArgument('container'); + if (!self::hasLogger($container)) { + return; } + self::getLogger($container)->notice('Application start.'); + }); + + $dispatcher->subscribeTo('applicationStop', function (Event $event) { + $container = $event->getArgument('container'); + if (!self::hasLogger($container)) { + return; } + self::getLogger($container)->notice('Application stop.'); + }); + } + + abstract private static function getDispatcher(Container $container): \Potter\Event\Dispatcher; + private static function getLogger(Container $container): Logger { return $container->get(Logger::class); @@ -44,4 +70,10 @@ trait Behaviour return [$container->get(Handler::class)]; } + abstract private static function hasDispatcher(Container $container): bool; + + private static function hasLogger(Container $container): bool + { + return $container->has(Logger::class); + } }