ritey / nginx-log-analyzer
Analyze/Parse Nginx log using php
dev-master
2022-08-12 09:46 UTC
Requires
- php: ^7.3|^8.0
Requires (Dev)
- doctrine/coding-standard: ^6.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.11.19
- phpstan/phpstan-phpunit: ^0.11.2
- phpunit/phpunit: ^8.4
- roave/security-advisories: dev-master
- spatie/phpunit-watcher: ^1.21
- vimeo/psalm: ^3.6
This package is not auto-updated.
Last update: 2024-11-02 18:19:01 UTC
README
Installation
composer require ritey/nginx-log-analyzer
Usage
<?php declare(strict_types=1); use Ritey\NginxLogAnalyzer\Parse; use Ritey\NginxLogAnalyzer\NginxAccessLogFormat; use Ritey\NginxLogAnalyzer\RegexPattern; $file = new SplFileObject('access.log'); $line = $file->fgets(); $parse = new Parse(new NginxAccessLogFormat(), new RegexPattern()); $information = $parse->line($line);
var_dump($information):
class stdClass#16 (8) {
public $remote_addr =>
string(13) "182.76.202.33"
public $remote_user =>
string(1) "-"
public $time_local =>
string(26) "21/Oct/2019:06:52:00 +0000"
public $request =>
string(14) "GET / HTTP/1.1"
public $status =>
string(3) "404"
public $bytes_sent =>
string(3) "580"
public $http_referer =>
string(1) "-"
public $http_user_agent =>
string(110) "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
}
Configuration
Basically, Parse
require two implementation:
Format
contract. There isgetStringRepresentation() : string
method.Pattern
contract. There arebuild(Format $format) : string
andgetIdentifiers() : array
methods.
Library already have built-in format support of default nginx access.log format which is:
$remote_addr - $remote_user [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent"
License
The MIT License (MIT). Please see License File for more information.