Reverse order and multiple log files handler

This commit is contained in:
2023-02-15 17:45:23 -03:00
parent 110f37e4f4
commit c29eece81c
16 changed files with 494 additions and 101 deletions

View File

@ -5,6 +5,8 @@ use DateTimeImmutable;
use SplFileInfo;
use Psr\Log\LoggerInterface;
use ProVM\Logview\Log\File;
use ProVM\Common\Define\Parser;
use ProVM\Logview\Parser as Parsers;
class Logs
{
@ -50,15 +52,31 @@ class Logs
}
return $output;
}
public function getParser(string $filename): Parser
{
$map = [
Parsers\Access::class => '/(access.log)/',
Parsers\Error::class => '/(error.log)/',
Parsers\Monolog::class => '/(php-\d{4}-\d{2}-\d{2}.log)/',
Parsers\PHPDefault::class => '/(php_errors.log)/'
];
foreach ($map as $class => $regex) {
if (\Safe\preg_match($regex, $filename) === 1) {
return new $class;
}
}
return new Parsers\Basic();
}
public function get(string $log_file): File
{
$filename = implode(DIRECTORY_SEPARATOR, [$this->getFolder(), $log_file]);
$file_info = new SplFileInfo($filename);
$content = \Safe\file_get_contents($filename);
$parser = $this->getParser($log_file);
return (new File())
->setLogger($this->getLogger())
->setParser($parser)
->setFullname($filename)
->setFilename($log_file)
->setDate((new DateTimeImmutable())->setTimestamp($file_info->getCTime()))
->setContent($content);
->setDate((new DateTimeImmutable())->setTimestamp($file_info->getCTime()));
}
}