lander931/log-reader

日志阅读器

v1.0.0 2018-09-08 12:35 UTC

This package is auto-updated.

Last update: 2024-09-08 22:38:27 UTC


README

描述

log-reader 允许读取日志文件。结果是一个您自己定义的数组。

结果示例

array(2) {
    [0] => object(LogEntity) {
        ["date"]    => "2018-01-01"
        ["time"]    => "15:00:00"
        ["message"] => "log 1"
    }
    [1] => object(LogEntity) {
        ["date"]    => "2018-01-01"
        ["time"]    => "15:00:05"
        ["message"] => "log 2"
    }
}

LogEntity 对象是一个示例,您可以从中形成任何结果,从任何自己的对象中。

安装

php composer require lander931/log-reader

使用

原始日志示例

2018-01-01 15:00:00 log 1
2018-01-01 15:00:05 log 2

读取日志

将日志文件的内容传递给 LogReader::read,并传递一个拆分日志的函数,该函数必须返回一个数组。

$reader = LogReader::read($log_content, function($text) {
    return explode("\n", $text);
})

形成结果

要形成结果,请使用 buildEntries。该函数接受一条日志记录的文本作为输入。在函数中,您应该处理一条日志记录的文本,形成并返回结果,可以是任何形式(例如对象或数组)。

$reader->buildEntries(function ($log){
    $pattern = "/\[(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})\] (.+)/";
    preg_match_all($pattern, $log, $matches, PREG_SET_ORDER);

    $date = $matches[0][1];
    $time = $matches[0][2];
    $message = $matches[0][3];

    return new LogEntity($date, $time, $message);
});

获取结果

$res = $reader->getEntries();

如果您没有处理每条日志记录,则返回一个拆分的日志数组。