Skip to content

diwms/nginx-log-analyzer

Repository files navigation

nginx-log-analyzer

Latest Version on Packagist Software License Build Status StyleCI Coverage Total Downloads


Installation

composer require diwms/nginx-log-analyzer

Usage

<?php

declare(strict_types=1);

use Diwms\NginxLogAnalyzer\Parse;
use Diwms\NginxLogAnalyzer\NginxAccessLogFormat;
use Diwms\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:

  1. Format contract. There is getStringRepresentation() : string method.
  2. Pattern contract. There are build(Format $format) : string and getIdentifiers() : 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.

About

Simple nginx access.log parser written in php.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages