Compare commits
2 Commits
ee140d7e6d
...
23b22556e7
| Author | SHA1 | Date | |
|---|---|---|---|
| 23b22556e7 | |||
| e00189b590 |
@@ -18,6 +18,7 @@
|
|||||||
"monolog/monolog": ">=3.10.0",
|
"monolog/monolog": ">=3.10.0",
|
||||||
"potter/console": ">=0.0.1",
|
"potter/console": ">=0.0.1",
|
||||||
"potter/container": ">=0.0.1",
|
"potter/container": ">=0.0.1",
|
||||||
|
"potter/event": ">=0.0.3",
|
||||||
"psr/log": ">=3.0.2"
|
"psr/log": ">=3.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
|||||||
namespace Potter\Logger;
|
namespace Potter\Logger;
|
||||||
|
|
||||||
use \Potter\Container;
|
use \Potter\Container;
|
||||||
|
use \Potter\Event\Event;
|
||||||
|
|
||||||
trait Behaviour
|
trait Behaviour
|
||||||
{
|
{
|
||||||
@@ -23,6 +24,7 @@ trait Behaviour
|
|||||||
private static function addLoggerBehaviour(Container $container): void
|
private static function addLoggerBehaviour(Container $container): void
|
||||||
{
|
{
|
||||||
self::addLogger($container);
|
self::addLogger($container);
|
||||||
|
self::addLoggerSubscription($container);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function addLoggerHandler(Container $container): void
|
private static function addLoggerHandler(Container $container): void
|
||||||
@@ -34,6 +36,30 @@ trait Behaviour
|
|||||||
->addArgument(\Potter\Console\Logger::class);
|
->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
|
private static function getLogger(Container $container): Logger
|
||||||
{
|
{
|
||||||
return $container->get(Logger::class);
|
return $container->get(Logger::class);
|
||||||
@@ -44,4 +70,10 @@ trait Behaviour
|
|||||||
return [$container->get(Handler::class)];
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user