php日志解析器输出未定义函数的错误


php log-parser outputs error with undefined function

我正在尝试让日志解析器工作https://github.com/kassner/log-parser在第一次尝试时,我得到了一个错误->

代码:

<?php
$parser = new 'Kassner'LogParser'LogParser.php();
$lines = file('/var/log/apache24/error.log', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    $entry = $parser->parse($line);
}
echo $entry;
?>

错误输出:

Fatal error: Call to undefined function php() in /usr/home/www/parselog.php on line 3

如何使logparser类正确输出?

仔细阅读您在问题中链接的文档,您会发现该类是从其命名空间加载的,在加载LogParser类时不应使用.php扩展名。因此,您必须从第三行删除.php

$parser = new 'Kassner'LogParser'LogParser();

请参阅有关导入命名空间的PHP文档。


它对我有效。我用Composer:安装了依赖项

composer require kassner/log-parser:~1.0

并在log.php文件中使用了您的代码:

<?php
require_once('vendor/autoload.php');
$parser = new 'Kassner'LogParser'LogParser();
$lines = file('/var/log/apache2/access.log', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    $entry = $parser->parse($line);
}
echo $entry;

然后我执行了它:

php -f log.php

它抛出一个错误:

PHP致命错误:未捕获异常"Kassner''LogParser''FormatException",消息为"127.0.0.1-[2015/Apr/01:32:01+0200]"GET/…HTTP/1.1"200 1753"-"Mozilla/5.0…Firefox/35.0"/vendor/kasner/log-parser/src/Kasner/LogParser/LogParser.php:73

错误与我的access.log文件的格式有关,但LogParser类已成功加载。