From c5ae573ed4c835ef0ec4ebf548cc0ee9631011d7 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 21 Nov 2019 21:28:32 +0800 Subject: [PATCH 1/3] add command and event log --- src/Service/DatabaseCommandLogger.php | 26 ++++++++++++++++++++++++++ src/Service/DatabaseEventLogger.php | 26 ++++++++++++++++++++++++++ src/Service/Engine.php | 20 ++++++++++++++++++-- 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 src/Service/DatabaseCommandLogger.php create mode 100644 src/Service/DatabaseEventLogger.php diff --git a/src/Service/DatabaseCommandLogger.php b/src/Service/DatabaseCommandLogger.php new file mode 100644 index 0000000..43d8ba0 --- /dev/null +++ b/src/Service/DatabaseCommandLogger.php @@ -0,0 +1,26 @@ +pushHandler(new RotatingFileHandler($logsDir . '/database_command.log', Logger::DEBUG)); + } +} \ No newline at end of file diff --git a/src/Service/DatabaseEventLogger.php b/src/Service/DatabaseEventLogger.php new file mode 100644 index 0000000..5767465 --- /dev/null +++ b/src/Service/DatabaseEventLogger.php @@ -0,0 +1,26 @@ +pushHandler(new RotatingFileHandler($logsDir . '/database_event.log', Logger::DEBUG)); + } +} \ No newline at end of file diff --git a/src/Service/Engine.php b/src/Service/Engine.php index bcbaa79..101d4ba 100644 --- a/src/Service/Engine.php +++ b/src/Service/Engine.php @@ -8,6 +8,8 @@ use Morebec\YDB\Event\DatabaseEvent; use Morebec\YDB\Event\Database\DatabaseCreatedEvent; use Morebec\YDB\Service\DatabaseLogger; +use Morebec\YDB\Service\DatabaseCommandLogger; +use Morebec\YDB\Service\DatabaseEventLogger; use Psr\Log\LogLevel; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -31,6 +33,12 @@ class Engine implements EventSubscriberInterface /** @var LoggerInterface|null */ private $logger; + /** @var LoggerInterface|null */ + private $commandLogger; + + /** @var LoggerInterface|null */ + private $eventLogger; + /** @var DatabaseEventDispatcher */ private $eventDispatcher; @@ -63,6 +71,8 @@ function __construct(DatabaseConfig $config) private function setupLogger(): void { $this->logger = new DatabaseLogger($this->database->getPath()); + $this->commandLogger = new DatabaseCommandLogger($this->database->getPath()); + $this->eventLogger = new DatabaseEventLogger($this->database->getPath()); } /** @@ -100,12 +110,18 @@ public function dispatchEvent(string $name, DatabaseEvent $event): void * @param string $message message * @param array $context optional context data */ - public function log(string $level, string $message, array $context = []): void + public function log(string $channel="default",string $level, string $message, array $context = []): void { if(!$this->logger) return; $context['database_root'] = (string)$this->database->getPath(); - $this->logger->log($level, $message, $context); + if($channel=="default"){ + $this->logger->log($level, $message, $context); + }else if($channel=="command"){ + $this->commandLogger->log($level, $message, $context); + }else if($channel=="event"){ + $this->eventLogger->log($level, $message, $context); + } } /** From ddaafa256a67d0c845af78ed533e5bde9bd3c6c9 Mon Sep 17 00:00:00 2001 From: Andy Date: Sat, 23 Nov 2019 20:51:36 +0800 Subject: [PATCH 2/3] Revert "add command and event log" This reverts commit c5ae573ed4c835ef0ec4ebf548cc0ee9631011d7. --- src/Service/DatabaseCommandLogger.php | 26 -------------------------- src/Service/DatabaseEventLogger.php | 26 -------------------------- src/Service/Engine.php | 20 ++------------------ 3 files changed, 2 insertions(+), 70 deletions(-) delete mode 100644 src/Service/DatabaseCommandLogger.php delete mode 100644 src/Service/DatabaseEventLogger.php diff --git a/src/Service/DatabaseCommandLogger.php b/src/Service/DatabaseCommandLogger.php deleted file mode 100644 index 43d8ba0..0000000 --- a/src/Service/DatabaseCommandLogger.php +++ /dev/null @@ -1,26 +0,0 @@ -pushHandler(new RotatingFileHandler($logsDir . '/database_command.log', Logger::DEBUG)); - } -} \ No newline at end of file diff --git a/src/Service/DatabaseEventLogger.php b/src/Service/DatabaseEventLogger.php deleted file mode 100644 index 5767465..0000000 --- a/src/Service/DatabaseEventLogger.php +++ /dev/null @@ -1,26 +0,0 @@ -pushHandler(new RotatingFileHandler($logsDir . '/database_event.log', Logger::DEBUG)); - } -} \ No newline at end of file diff --git a/src/Service/Engine.php b/src/Service/Engine.php index fe50a70..6071912 100644 --- a/src/Service/Engine.php +++ b/src/Service/Engine.php @@ -8,8 +8,6 @@ use Morebec\YDB\Event\DatabaseEvent; use Morebec\YDB\Event\Database\DatabaseCreatedEvent; use Morebec\YDB\Service\DatabaseLogger; -use Morebec\YDB\Service\DatabaseCommandLogger; -use Morebec\YDB\Service\DatabaseEventLogger; use Psr\Log\LogLevel; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -33,12 +31,6 @@ class Engine implements EventSubscriberInterface /** @var LoggerInterface|null */ private $logger; - /** @var LoggerInterface|null */ - private $commandLogger; - - /** @var LoggerInterface|null */ - private $eventLogger; - /** @var DatabaseEventDispatcher */ private $eventDispatcher; @@ -71,8 +63,6 @@ public function __construct(DatabaseConfig $config) private function setupLogger(): void { $this->logger = new DatabaseLogger($this->database->getPath()); - $this->commandLogger = new DatabaseCommandLogger($this->database->getPath()); - $this->eventLogger = new DatabaseEventLogger($this->database->getPath()); } /** @@ -110,20 +100,14 @@ public function dispatchEvent(string $name, DatabaseEvent $event): void * @param string $message message * @param array $context optional context data */ - public function log(string $channel="default",string $level, string $message, array $context = []): void + public function log(string $level, string $message, array $context = []): void { if (!$this->logger) { return; } $context['database_root'] = (string)$this->database->getPath(); - if($channel=="default"){ - $this->logger->log($level, $message, $context); - }else if($channel=="command"){ - $this->commandLogger->log($level, $message, $context); - }else if($channel=="event"){ - $this->eventLogger->log($level, $message, $context); - } + $this->logger->log($level, $message, $context); } /** From 39ab7b489205d8b5743a4dfe108e148cda0e599d Mon Sep 17 00:00:00 2001 From: Andy Date: Sat, 23 Nov 2019 22:41:42 +0800 Subject: [PATCH 3/3] add command and event log --- src/Enum/LoggerChannel.php | 15 +++++++++++++++ src/Service/DatabaseLogger.php | 15 +++++++++++---- src/Service/Engine.php | 13 ++++++++++--- 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 src/Enum/LoggerChannel.php diff --git a/src/Enum/LoggerChannel.php b/src/Enum/LoggerChannel.php new file mode 100644 index 0000000..fe3be87 --- /dev/null +++ b/src/Enum/LoggerChannel.php @@ -0,0 +1,15 @@ +pushHandler(new RotatingFileHandler($logsDir . '/database.log', Logger::DEBUG)); + $channels = LoggerChannel::getValues(); + foreach($channels as $channel){ + $this->loggers[$channel] = new Logger($channel); + $logsDir = $databasePath . "/" . Database::LOGS_DIR_NAME; + $this->pushHandler(new RotatingFileHandler($logsDir . "/".$channel."log", Logger::DEBUG)); + } + } } diff --git a/src/Service/Engine.php b/src/Service/Engine.php index 6071912..af0e542 100644 --- a/src/Service/Engine.php +++ b/src/Service/Engine.php @@ -12,6 +12,7 @@ use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Filesystem\Filesystem; +use Morebec\YDB\Enum\LoggerChannel; /** * The engine class serves as a service container. @@ -100,14 +101,20 @@ public function dispatchEvent(string $name, DatabaseEvent $event): void * @param string $message message * @param array $context optional context data */ - public function log(string $level, string $message, array $context = []): void + public function log(string $level, string $message, array $context = [],string $channel = LoggerChannel::__DEFAULT): void { if (!$this->logger) { return; } - + Assertion::keyExists($this->logger->loggers, $channel, "Unsupported channel '$channel'"); $context['database_root'] = (string)$this->database->getPath(); - $this->logger->log($level, $message, $context); + $this->logger->loggers[LoggerChannel::__DEFAULT]->log($level, $message, $context); + if ($channel === LoggerChannel::__DEFAULT) { + return; + } + // Log in channel specific logger + $this->logger->loggers[$channel]->log($level, $message, $context); + } /**