php log-parser输出未定义函数的错误

时间:2015-03-31 19:30:03

标签: php parsing logging

我正在尝试让日志解析器工作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类正确输出?

1 个答案:

答案 0 :(得分:0)

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

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

请参阅PHP documentation about importing namespaces


它对我有用。我在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 - [01 / Apr / 2015:00:32:01 +0200]“GET / ... HTTP / 1.1”200 1753“ - ”Mozilla / 5.0 ... Firefox / 35.0“在/.../ vendor / kassner / log-parser / src / Kassner / LogParser / LogParser.php:73

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