Files
simrs-jatim/core/LogReader/Nginx.php
2024-04-19 14:04:41 +07:00

41 lines
1.6 KiB
PHP

<?php
require_once '../core/LogReader/Abstract.php';
require_once '../core/LogReader/Item/Nginx.php';
class LogReader_Nginx extends LogReader_Abstract {
public function read() {
//2014/03/28 15:17:15 [error] 13385#0: *197692 open() "/var/www/logo.png" failed (2: No such file or directory), client: 192.168.1.1, server: cs.google.com, request: "GET /static/img/logo.png HTTP/1.1", host: "cs.google.com", referrer: "http://google.com"
while (!$this->_file->eof()) {
if (preg_match('/^(?<date>[0-9\/]+ [0-9:]+) \[.+?\] .+? .+? (?<message>.+), client: .+?,(.+)request: "(?<request>.+)", host: "(?<host>.+?)"(, referrer: "(?<referrer>.+)")?/', $this->_file->fgets(), $matches)) {
$item = new LogReader_Item_Nginx();
$timestamp = date('Y-m-d H:i:s', strtotime($matches['date']));
$item->setTimestamp($timestamp);
$message = $matches['message'];
$type = $this->_getType($message);
$item->setType($type);
$item->setMessage($message);
$item->setRequest($matches['request']);
$item->setHost($matches['host']);
if (isset($matches['referrer'])) {
$item->setReferrer($matches['referrer']);
}
if ($this->_storage) {
$this->_storage->save($item);
}
}
}
}
protected function _getType($message) {
if (preg_match('/^([a-zA-Z0-9 ()]+) "/', $message, $matches) && isset($matches[1])) {
return trim($matches[1]);
}
}
}