log parser
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
tests
.gitignore
.travis.yml
LICENSE
README.md
composer.json
config.yml.dist
phpunit.xml.dist

README.md

Logio

Build Status

Log parser

Из коробки поддерживаются:

  • apache
  • nginx
  • php
  • php-fpm
  • mysql

Добавление нового парсера заключается в написании в конфигурации регулярных выражений для нового парсера.

Installation:

composer require gemorroj/logio

Example:

<?php

$config = Logio\Config::createFromYaml('/path_to_config/config.yml');
$logio = new Logio\Logio($config);

$parser = $logio->run('php');
foreach ($parser as $data) {
    print_r($data);
    /*
    Array
    (
        [date] => DateTime Object
            (
                [date] => 2017-02-22 06:11:51.000000
                [timezone_type] => 3
                [timezone] => Europe/Moscow
            )
    
        [type] => PHP Warning
        [message] => session_start(): open(/var/lib/php/session/sess_2u61qee1kg9p7rr69mgka5ddf4, O_RDWR) failed: Permission denied (13)
        [file] => /var/www/forum/register.php
        [line] => 2
    )
     */
}

TODO

добавть в конфиги новый параметр который, говорил бы о добавлении данных в массив до того момента. пока не сработает регулярка. Например:

mysql:
    path: 'tests/fixtures/mysql.log'
    format:
        date: '/^([0-9A-Z\.\-:]+) /'
        thread: '/^(?:[0-9A-Z\.\-:]+) ([0-9]+) \[/'
        type: '/(?:[0-9]+) \[(.+)\] /'
        message: '/ (?:[0-9]+ \[.+\] ){0,1}(.+)+/'
    cast:
        date: '\DateTime'
    append:
        message: '/todo/'
2016-03-01T22:22:38.769531Z 0 [Note] InnoDB: Progress in MB:
 100 200
2016-03-01T22:22:39.884951Z 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0

Должно получиться 2 элемента массива, " 100 200" должны присоедениться к message предыдущей строки.