Update Core\LogViewer
This commit is contained in:
parent
dbf90604b3
commit
08550d809d
1 changed files with 23 additions and 14 deletions
|
@ -27,6 +27,7 @@ class LogViewer
|
|||
protected $typePattern;
|
||||
protected $resource;
|
||||
protected $fileList;
|
||||
protected $hashList;
|
||||
protected $replName = [
|
||||
'.' => '\\.',
|
||||
'*' => '.*',
|
||||
|
@ -57,7 +58,7 @@ class LogViewer
|
|||
$pos = \strpos($format, '%level_name%');
|
||||
|
||||
if (false === $pos) {
|
||||
throw new RuntimeException('Missing log level in log format ');
|
||||
throw new RuntimeException('Missing log level in log format');
|
||||
}
|
||||
|
||||
$pos = $pos + 12;
|
||||
|
@ -88,15 +89,25 @@ class LogViewer
|
|||
}
|
||||
|
||||
\arsort($result, \SORT_NUMERIC);
|
||||
$this->setHashList($result);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function setHashList(array $fileList): void
|
||||
{
|
||||
$this->hashList = [];
|
||||
|
||||
foreach ($fileList as $name => $time) {
|
||||
$this->hashList[\sha1($name)] = $name;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список логов в виде:
|
||||
* 'реальный путь до файла' => 'время последнего изменения', ...
|
||||
*/
|
||||
public function list(): array
|
||||
public function files(): array
|
||||
{
|
||||
return $this->fileList;
|
||||
}
|
||||
|
@ -123,24 +134,17 @@ class LogViewer
|
|||
isset($cache[$hash])
|
||||
&& $cache[$hash]['time'] === $this->fileList[$key]
|
||||
) {
|
||||
$result[$key] = $cache[$hash]['data'];
|
||||
$result[$hash] = $cache[$hash]['data'];
|
||||
} else {
|
||||
$result[$key] = $this->generateInfo($key);
|
||||
$cache[$hash] = [
|
||||
$result[$hash] = $this->generateInfo($key);
|
||||
$cache[$hash] = [
|
||||
'time' => $this->fileList[$key],
|
||||
'data' => $result[$key],
|
||||
'data' => $result[$hash],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$files = [];
|
||||
|
||||
foreach ($this->fileList as $key => $val) {
|
||||
$hash = \sha1($key);
|
||||
$files[$hash] = $val;
|
||||
}
|
||||
|
||||
$cache = \array_intersect_key($cache, $files);
|
||||
$cache = \array_intersect_key($cache, $this->hashList);
|
||||
|
||||
$this->cache->set(self::CACHE_KEY, $cache);
|
||||
|
||||
|
@ -149,7 +153,12 @@ class LogViewer
|
|||
|
||||
protected function generateInfo(string $file): array
|
||||
{
|
||||
if (! \preg_match('%[\\\/]([^\\\/]++)$%D', $file, $matches)) {
|
||||
throw new RuntimeException("Can't extract filename from path '{$file}'");
|
||||
}
|
||||
|
||||
$result = [
|
||||
'log_name' => $matches[1],
|
||||
'emergency' => 0,
|
||||
'alert' => 0,
|
||||
'critical' => 0,
|
||||
|
|
Loading…
Reference in a new issue