From 9fe1ad9abf3e41affa94c87d38090cdc4c72cdc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D?= Date: Thu, 9 May 2024 12:27:13 +0200 Subject: [PATCH] refactor(php): Rebuild logging setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rubén D --- lib/SP/Core/Definitions/CoreDefinitions.php | 42 ++++++++++--- lib/SP/Core/ModuleBase.php | 12 +--- lib/SP/Core/ProvidersHelper.php | 23 ++------ lib/SP/Domain/Log/Providers/FileHandler.php | 51 ---------------- .../{SyslogHandler.php => LogHandler.php} | 13 ++-- lib/SP/Domain/Log/Providers/LoggerBase.php | 7 ++- .../Log/Providers/RemoteSyslogHandler.php | 59 ------------------- 7 files changed, 49 insertions(+), 158 deletions(-) delete mode 100644 lib/SP/Domain/Log/Providers/FileHandler.php rename lib/SP/Domain/Log/Providers/{SyslogHandler.php => LogHandler.php} (81%) delete mode 100644 lib/SP/Domain/Log/Providers/RemoteSyslogHandler.php diff --git a/lib/SP/Core/Definitions/CoreDefinitions.php b/lib/SP/Core/Definitions/CoreDefinitions.php index 1795c0f0..4c4e2f2d 100644 --- a/lib/SP/Core/Definitions/CoreDefinitions.php +++ b/lib/SP/Core/Definitions/CoreDefinitions.php @@ -30,8 +30,12 @@ use Aura\SqlQuery\QueryFactory; use Klein\Klein; use Klein\Request as KleinRequest; use Klein\Response as KleinResponse; +use Monolog\Handler\StreamHandler; +use Monolog\Handler\SyslogHandler as MSyslogHandler; +use Monolog\Handler\SyslogUdpHandler; use Monolog\Logger; use Psr\Container\ContainerInterface; +use Psr\Log\LoggerInterface; use SP\Core\Acl\Acl; use SP\Core\Acl\Actions; use SP\Core\Application; @@ -96,9 +100,7 @@ use SP\Domain\Install\Adapters\InstallDataFactory; use SP\Domain\Install\Services\DatabaseSetupInterface; use SP\Domain\Install\Services\MysqlSetupBuilder; use SP\Domain\Log\Providers\DatabaseHandler; -use SP\Domain\Log\Providers\FileHandler as LogFileHandler; -use SP\Domain\Log\Providers\RemoteSyslogHandler; -use SP\Domain\Log\Providers\SyslogHandler; +use SP\Domain\Log\Providers\LogHandler; use SP\Domain\Notification\Ports\MailerInterface; use SP\Domain\Notification\Providers\MailHandler; use SP\Domain\Notification\Providers\NotificationHandler; @@ -203,8 +205,32 @@ final class CoreDefinitions return $authProvider; } )->parameter('authProvider', autowire(AuthProvider::class)), - Logger::class => create(Logger::class) - ->constructor('syspass'), + LoggerInterface::class => factory(function (ConfigDataInterface $configData) { + $handlers = []; + $handlers[] = new StreamHandler(LOG_FILE); + + if ($configData->isInstalled()) { + if ($configData->isSyslogRemoteEnabled() + && $configData->getSyslogServer() + && $configData->getSyslogPort() + ) { + $handlers[] = new SyslogUdpHandler( + $configData->getSyslogServer(), + $configData->getSyslogPort(), + LOG_USER, + Logger::DEBUG, + true, + 'syspass' + ); + } + + if ($configData->isSyslogEnabled()) { + $handlers[] = new MSyslogHandler('syspass'); + } + } + + return new Logger('syspass', $handlers); + }), \GuzzleHttp\Client::class => create(\GuzzleHttp\Client::class) ->constructor(factory([Client::class, 'getOptions'])), Csrf::class => autowire(Csrf::class), @@ -230,15 +256,13 @@ final class CoreDefinitions $configData = $c->get(ConfigDataInterface::class); if (!$configData->isInstalled()) { - return new ProvidersHelper($c->get(LogFileHandler::class)); + return new ProvidersHelper($c->get(LogHandler::class)); } return new ProvidersHelper( - $c->get(LogFileHandler::class), + $c->get(LogHandler::class), $c->get(DatabaseHandler::class), $c->get(MailHandler::class), - $c->get(SyslogHandler::class), - $c->get(RemoteSyslogHandler::class), $c->get(AclHandler::class), $c->get(NotificationHandler::class) ); diff --git a/lib/SP/Core/ModuleBase.php b/lib/SP/Core/ModuleBase.php index 8ddc7739..a25c0db9 100644 --- a/lib/SP/Core/ModuleBase.php +++ b/lib/SP/Core/ModuleBase.php @@ -61,9 +61,7 @@ abstract class ModuleBase implements ModuleInterface */ protected function initEventHandlers(bool $partialInit = false): void { - if (DEBUG || $this->configData->isDebug() || !$this->configData->isInstalled()) { - $this->eventDispatcher->attach($this->providersHelper->getFileLogHandler()); - } + $this->eventDispatcher->attach($this->providersHelper->getLogHandler()); if ($partialInit || !$this->configData->isInstalled()) { return; @@ -77,14 +75,6 @@ abstract class ModuleBase implements ModuleInterface $this->eventDispatcher->attach($this->providersHelper->getMailHandler()); } - if ($this->configData->isSyslogEnabled()) { - $this->eventDispatcher->attach($this->providersHelper->getSyslogHandler()); - } - - if ($this->configData->isSyslogRemoteEnabled()) { - $this->eventDispatcher->attach($this->providersHelper->getRemoteSyslogHandler()); - } - $this->eventDispatcher->attach($this->providersHelper->getAclHandler()); $this->eventDispatcher->attach($this->providersHelper->getNotificationHandler()); } diff --git a/lib/SP/Core/ProvidersHelper.php b/lib/SP/Core/ProvidersHelper.php index a723f1ed..b72c20a8 100644 --- a/lib/SP/Core/ProvidersHelper.php +++ b/lib/SP/Core/ProvidersHelper.php @@ -1,4 +1,5 @@ fileLogHandler; + return $this->logHandler; } public function getDatabaseLogHandler(): DatabaseHandler @@ -65,16 +62,6 @@ final readonly class ProvidersHelper return $this->mailHandler; } - public function getSyslogHandler(): SyslogHandler - { - return $this->syslogHandler; - } - - public function getRemoteSyslogHandler(): RemoteSyslogHandler - { - return $this->remoteSyslogHandler; - } - public function getAclHandler(): AclHandler { return $this->aclHandler; diff --git a/lib/SP/Domain/Log/Providers/FileHandler.php b/lib/SP/Domain/Log/Providers/FileHandler.php deleted file mode 100644 index 98b9942c..00000000 --- a/lib/SP/Domain/Log/Providers/FileHandler.php +++ /dev/null @@ -1,51 +0,0 @@ -. - */ - -namespace SP\Domain\Log\Providers; - -use Monolog\Handler\StreamHandler; -use SP\Domain\Common\Providers\EventsTrait; -use SP\Domain\Log\Ports\FileHandlerProvider; - -/** - * Class FileHandler - */ -final class FileHandler extends LoggerBase implements FileHandlerProvider -{ - use EventsTrait; - - /** - * @inheritDoc - */ - public function getEventsString(): string - { - return $this->events; - } - - protected function setup(): void - { - $this->logger->pushHandler(new StreamHandler(LOG_FILE)); - } -} diff --git a/lib/SP/Domain/Log/Providers/SyslogHandler.php b/lib/SP/Domain/Log/Providers/LogHandler.php similarity index 81% rename from lib/SP/Domain/Log/Providers/SyslogHandler.php rename to lib/SP/Domain/Log/Providers/LogHandler.php index ac275555..3edbd5d8 100644 --- a/lib/SP/Domain/Log/Providers/SyslogHandler.php +++ b/lib/SP/Domain/Log/Providers/LogHandler.php @@ -1,5 +1,4 @@ . */ +declare(strict_types=1); + namespace SP\Domain\Log\Providers; -use Monolog\Handler\SyslogHandler as MSyslogHandler; - /** - * Class SyslogHandler + * Class LogHandler */ -final class SyslogHandler extends LoggerBase +final class LogHandler extends LoggerBase { + /** * @inheritDoc */ - public function getEventsString(): string + public function getEventsString(): ?string { return $this->events; } protected function setup(): void { - $this->logger->pushHandler(new MSyslogHandler('syspass')); } } diff --git a/lib/SP/Domain/Log/Providers/LoggerBase.php b/lib/SP/Domain/Log/Providers/LoggerBase.php index 071ad156..854925cf 100644 --- a/lib/SP/Domain/Log/Providers/LoggerBase.php +++ b/lib/SP/Domain/Log/Providers/LoggerBase.php @@ -1,4 +1,5 @@ . - */ - -namespace SP\Domain\Log\Providers; - -use Monolog\Handler\SyslogUdpHandler; -use Monolog\Logger; - -/** - * Class RemoteSyslogHandler - */ -final class RemoteSyslogHandler extends LoggerBase -{ - /** - * @inheritDoc - */ - public function getEventsString(): string - { - return $this->events; - } - - protected function setup(): void - { - $configData = $this->config->getConfigData(); - - $this->logger->pushHandler( - new SyslogUdpHandler( - $configData->getSyslogServer(), - $configData->getSyslogPort(), - LOG_USER, - Logger::DEBUG, - true, - 'syspass' - ) - ); - } -}