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