我正在尝试解析PHP错误日志。问题是按\n
分隔文件不起作用。
explode(PHP_EOL, $log)
这不起作用,因为有一些错误消息本身包含\n
。
如何按行破解此类文件?
有问题的日志摘录:
[04-Jan-2012 21:28:48] PHP Notice: Use of undefined constant AY_FACEBOOK_TAB_URL - assumed 'AY_FACEBOOK_TAB_URL' in /var/www/[hidden]/default.layout.tpl.php on line 36
[04-Jan-2012 22:38:02] PHP Notice: Use of undefined constant AY_FACEBOOK_TAB_URL - assumed 'AY_FACEBOOK_TAB_URL' in /var/www/[hidden]/default.layout.tpl.php on line 36
[04-Jan-2012 23:43:33] PHP Warning: file_get_contents(https://graph.facebook.com/4294967295/picture?type=large): failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Error
in /var/www/[hidden]/result.tpl.php on line 11
[04-Jan-2012 23:43:33] PHP Notice: Undefined variable: image in /var/www/[hidden]/result.tpl.php on line 20
注意HTTP/1.0 500 Internal Server Error
之后的换行符。
答案 0 :(得分:2)
使用正则表达式匹配行的开头。它通常是日期/时间(时间戳)。
此代码适用于我:
<?php
$content = file_get_contents('/var/log/php-log.log');
var_dump(preg_split('/\[\d\d-\w{3}-\d{4}\s+\d\d:\d\d:\d\d\]/', $content));
但是,虽然我正在使用行开始模式进行拆分,但第一个结果项将为空。
答案 1 :(得分:0)
尝试使用"\r\n"
并确保它们位于双引号之间。