Skip when error in parsing log file
This commit is contained in:
@ -3,23 +3,35 @@ namespace ProVM\Common\Service;
|
|||||||
|
|
||||||
use DateTimeImmutable;
|
use DateTimeImmutable;
|
||||||
use SplFileInfo;
|
use SplFileInfo;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
use ProVM\Logview\Log\File;
|
use ProVM\Logview\Log\File;
|
||||||
|
|
||||||
class Logs
|
class Logs
|
||||||
{
|
{
|
||||||
public function __construct(string $folder)
|
public function __construct(LoggerInterface $logger, string $folder)
|
||||||
{
|
{
|
||||||
$this
|
$this
|
||||||
|
->setLogger($logger)
|
||||||
->setFolder($folder);
|
->setFolder($folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected LoggerInterface $logger;
|
||||||
protected string $folder;
|
protected string $folder;
|
||||||
|
|
||||||
|
public function getLogger(): LoggerInterface
|
||||||
|
{
|
||||||
|
return $this->logger;
|
||||||
|
}
|
||||||
public function getFolder(): string
|
public function getFolder(): string
|
||||||
{
|
{
|
||||||
return $this->folder;
|
return $this->folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setLogger(LoggerInterface $logger): Logs
|
||||||
|
{
|
||||||
|
$this->logger = $logger;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
public function setFolder(string $folder): Logs
|
public function setFolder(string $folder): Logs
|
||||||
{
|
{
|
||||||
$this->folder = $folder;
|
$this->folder = $folder;
|
||||||
@ -43,6 +55,10 @@ class Logs
|
|||||||
$filename = implode(DIRECTORY_SEPARATOR, [$this->getFolder(), $log_file]);
|
$filename = implode(DIRECTORY_SEPARATOR, [$this->getFolder(), $log_file]);
|
||||||
$file_info = new SplFileInfo($filename);
|
$file_info = new SplFileInfo($filename);
|
||||||
$content = \Safe\file_get_contents($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 [
|
return [
|
||||||
ProVM\Common\Service\Logs::class => function(ContainerInterface $container) {
|
ProVM\Common\Service\Logs::class => function(ContainerInterface $container) {
|
||||||
return new ProVM\Common\Service\Logs(
|
return new ProVM\Common\Service\Logs(
|
||||||
|
$container->get(Psr\Log\LoggerInterface::class),
|
||||||
$container->get('logs_folder')
|
$container->get('logs_folder')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,20 @@
|
|||||||
namespace ProVM\Logview\Log;
|
namespace ProVM\Logview\Log;
|
||||||
|
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
use ProVM\Logview\Log;
|
use ProVM\Logview\Log;
|
||||||
|
|
||||||
class File
|
class File
|
||||||
{
|
{
|
||||||
|
protected LoggerInterface $logger;
|
||||||
protected string $filename;
|
protected string $filename;
|
||||||
protected DateTimeInterface $dateTime;
|
protected DateTimeInterface $dateTime;
|
||||||
protected string $content;
|
protected string $content;
|
||||||
|
|
||||||
|
public function getLogger(): LoggerInterface
|
||||||
|
{
|
||||||
|
return $this->logger;
|
||||||
|
}
|
||||||
public function getFilename(): string
|
public function getFilename(): string
|
||||||
{
|
{
|
||||||
return $this->filename;
|
return $this->filename;
|
||||||
@ -23,6 +29,11 @@ class File
|
|||||||
return $this->content;
|
return $this->content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setLogger(LoggerInterface $logger): File
|
||||||
|
{
|
||||||
|
$this->logger = $logger;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
public function setFilename(string $filename): File
|
public function setFilename(string $filename): File
|
||||||
{
|
{
|
||||||
$this->filename = $filename;
|
$this->filename = $filename;
|
||||||
@ -49,9 +60,9 @@ class File
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
$logs []= Log::parse($line);
|
$logs []= Log::parse($line);
|
||||||
} catch (\Exception $e) {
|
} catch (\Error | \Exception $e) {
|
||||||
$this->getLogger()->debug($line);
|
$this->getLogger()->debug($line);
|
||||||
throw $e;
|
$this->getLogger()->error($e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return array_reverse($logs);
|
return array_reverse($logs);
|
||||||
|
Reference in New Issue
Block a user