Skip when error in parsing log file
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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')
|
||||
);
|
||||
}
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user