我正在尝试让日志解析器工作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类正确输出?
答案 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
类已成功加载。