log-parser
log-parser copied to clipboard
Universal log parser in plain PHP
Server Log Parser
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
- How to implement custom parser?
Implemented Parsers
- mvar/apache2-log-parser - Apache access/error log parser based on this library
License
This package is licensed under the MIT License. See the LICENSE file for details.