Skip to content
Universal log parser in plain PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
src
tests
.gitignore
.scrutinizer.yml
.travis.yml
LICENSE
README.md
composer.json
phpunit.xml.dist

README.md

Server Log Parser

Latest Stable Version Build Status Code Coverage Code Quality

This library allows you to easily iterate over your Apache, nginx or any other web server log files.

Main features:

  • Log file iterator
  • Parser abstraction to help you implement your custom parser
  • Low memory footprint even with huge files

Installation

This library can be found on Packagist. The recommended way to install this is through Composer:

composer require mvar/log-parser:^1.0

Basic Usage

Lets say you have log file my.log with following content:

GET /favicon.ico 200
GET /about 404

All you need to do to iterate over the file is to initialize SimpleParser with your regular expression and pass it to LogIterator:

<?php

require __DIR__ . '/vendor/autoload.php';

use MVar\LogParser\LogIterator;
use MVar\LogParser\SimpleParser;  

// Pass your regular expression
$parser = new SimpleParser('/(?<method>\S+)\s+(?<path>\S+)\s+(?<response_code>\d+)/');

foreach (new LogIterator('my.log', $parser) as $data) {
    var_export($data);
    echo "\n";
}

The above example will output:

array (
  'method' => 'GET',
  'path' => '/favicon.ico',
  'response_code' => '200',
)
array (
  'method' => 'GET',
  'path' => '/about',
  'response_code' => '404',
)

It is also possible to parse compressed files by adding stream wrapper before file name:

$logFile = 'compress.zlib://file:///path/to/log.gz';

How To

Implemented Parsers

License

This package is licensed under the MIT License. See the LICENSE file for details.

You can’t perform that action at this time.