public function get(LogFile $logFile) { $args = self::getFilesystem($logFile->getArgs()); $file = $args['filesystem']->read($args['path']); if (pathinfo($args['path'])['extension'] === 'gz') { $file = gzdecode($file); } $lines = explode("\n", $file); $parser = new LineLogParser(); if (isset($args['pattern'])) { $hasCustomPattern = true; $parser->registerPattern('custom', $args['pattern']); } else { $hasCustomPattern = false; } foreach ($lines as $line) { $entry = $hasCustomPattern ? $parser->parse($line, 0, 'custom') : $parser->parse($line, 0); if (count($entry) > 0) { if (!$logFile->hasLogger($entry['logger'])) { $logFile->addLogger($entry['logger']); } $logFile->addLine($entry); } } if ($this->reverse) { $logFile->reverseLines(); } return $logFile; }
public function load() { switch ($this->args['type']) { case 'ftp': $this->filesystem = new Filesystem(new Ftp(array('host' => $this->args['host'], 'username' => $this->args['username'], 'password' => $this->args['password'], 'passive' => true, 'ssl' => false))); break; case 'local': $this->filesystem = new Filesystem(new Local(dirname($this->args['path']))); $this->args['path'] = basename($this->args['path']); break; default: throw new \InvalidArgumentException("Invalid log file type: \"" . $this->args['type'] . "\""); } $file = $this->filesystem->read($this->args['path']); $lines = explode("\n", $file); $parser = new LineLogParser(); if (isset($this->args['pattern'])) { $hasCustomPattern = true; $parser->registerPattern('custom', $this->args['pattern']); } else { $hasCustomPattern = false; } $this->loggers = new ArrayCollection(); foreach ($lines as $line) { $entry = $hasCustomPattern ? $parser->parse($line, 0, 'custom') : $parser->parse($line, 0); if (count($entry) > 0) { if (!$this->loggers->contains($entry['logger'])) { $this->loggers->add($entry['logger']); } $this->lines[] = $entry; } } return $this; }
public function testLineFormatter() { $parser = new LineLogParser(); $log = $parser->parse('[2013-03-16 14:19:51] test.INFO: foobar {"foo":"bar"} []'); $this->assertInstanceOf('\\DateTime', $log['date']); $this->assertEquals('test', $log['logger']); $this->assertEquals('INFO', $log['level']); $this->assertEquals('foobar', $log['message']); $this->assertArrayHasKey('foo', $log['context']); }
/** * @param $name * @param $path */ public function __construct($name, $path) { setlocale(LC_ALL, 'en_US.UTF8'); $this->name = $name; $this->slug = $this->toAscii($name); $this->path = $path; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->path); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $file = curl_exec($ch); curl_close($ch); $lines = explode("\n", $file); $parser = new LineLogParser(); foreach ($lines as $line) { $entry = $parser->parse($line, 0); if (count($entry) > 0) { $this->lines[] = $entry; } } }
private function loadSource(LogFile $logFile) { $args = $logFile->getArgs(); switch ($args['type']) { case 'ftp': $filesystem = new Filesystem(new Ftp(array('host' => $args['host'], 'username' => $args['username'], 'password' => $args['password'], 'passive' => true, 'ssl' => false))); break; case 'local': $filesystem = new Filesystem(new Local(dirname($args['path']))); $args['path'] = basename($args['path']); break; default: throw new \InvalidArgumentException("Invalid log file type: \"" . $args['type'] . "\""); } $file = $filesystem->read($args['path']); $lines = explode("\n", $file); $parser = new LineLogParser(); if (isset($args['pattern'])) { $hasCustomPattern = true; $parser->registerPattern('custom', $args['pattern']); } else { $hasCustomPattern = false; } foreach ($lines as $line) { $entry = $hasCustomPattern ? $parser->parse($line, 0, 'custom') : $parser->parse($line, 0); if (count($entry) > 0) { if (!$logFile->hasLogger($entry['logger'])) { $logFile->addLogger($entry['logger']); } $logFile->addLine($entry); } } if ($this->reverse) { $logFile->reverseLines(); } $this->writeCache($logFile); return $logFile; }