From 110f37e4f431d4707aad911e41d9686ed03e1727 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Tue, 14 Feb 2023 23:18:30 -0300 Subject: [PATCH] Skip when error in parsing log file --- app/common/Service/Logs.php | 20 ++++++++++++++++++-- app/setup/setups/03_services.php | 1 + app/src/Log/File.php | 15 +++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/common/Service/Logs.php b/app/common/Service/Logs.php index d389197..fca8cbf 100644 --- a/app/common/Service/Logs.php +++ b/app/common/Service/Logs.php @@ -3,23 +3,35 @@ namespace ProVM\Common\Service; use DateTimeImmutable; use SplFileInfo; +use Psr\Log\LoggerInterface; use ProVM\Logview\Log\File; class Logs { - public function __construct(string $folder) + public function __construct(LoggerInterface $logger, string $folder) { $this + ->setLogger($logger) ->setFolder($folder); } + protected LoggerInterface $logger; protected string $folder; + public function getLogger(): LoggerInterface + { + return $this->logger; + } public function getFolder(): string { return $this->folder; } + public function setLogger(LoggerInterface $logger): Logs + { + $this->logger = $logger; + return $this; + } public function setFolder(string $folder): Logs { $this->folder = $folder; @@ -43,6 +55,10 @@ class Logs $filename = implode(DIRECTORY_SEPARATOR, [$this->getFolder(), $log_file]); $file_info = new SplFileInfo($filename); $content = \Safe\file_get_contents($filename); - return (new File())->setFilename($log_file)->setDate((new DateTimeImmutable())->setTimestamp($file_info->getCTime()))->setContent($content); + return (new File()) + ->setLogger($this->getLogger()) + ->setFilename($log_file) + ->setDate((new DateTimeImmutable())->setTimestamp($file_info->getCTime())) + ->setContent($content); } } diff --git a/app/setup/setups/03_services.php b/app/setup/setups/03_services.php index fc06cb9..ac7fa9d 100644 --- a/app/setup/setups/03_services.php +++ b/app/setup/setups/03_services.php @@ -4,6 +4,7 @@ use Psr\Container\ContainerInterface; return [ ProVM\Common\Service\Logs::class => function(ContainerInterface $container) { return new ProVM\Common\Service\Logs( + $container->get(Psr\Log\LoggerInterface::class), $container->get('logs_folder') ); } diff --git a/app/src/Log/File.php b/app/src/Log/File.php index 3a05779..4c5fd28 100644 --- a/app/src/Log/File.php +++ b/app/src/Log/File.php @@ -2,14 +2,20 @@ namespace ProVM\Logview\Log; use DateTimeInterface; +use Psr\Log\LoggerInterface; use ProVM\Logview\Log; class File { + protected LoggerInterface $logger; protected string $filename; protected DateTimeInterface $dateTime; protected string $content; + public function getLogger(): LoggerInterface + { + return $this->logger; + } public function getFilename(): string { return $this->filename; @@ -23,6 +29,11 @@ class File return $this->content; } + public function setLogger(LoggerInterface $logger): File + { + $this->logger = $logger; + return $this; + } public function setFilename(string $filename): File { $this->filename = $filename; @@ -49,9 +60,9 @@ class File } try { $logs []= Log::parse($line); - } catch (\Exception $e) { + } catch (\Error | \Exception $e) { $this->getLogger()->debug($line); - throw $e; + $this->getLogger()->error($e); } } return array_reverse($logs);