Reverse order and multiple log files handler
This commit is contained in:
@ -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()));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user