mvar/log-parser

Universal log parser

v1.1.0 2017-06-13 18:59 UTC

This package is not auto-updated.

Last update: 2024-04-13 16:23:53 UTC


README

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.