Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php解析日志文件并存储在数组中_Php_Arrays_Parsing_Logging - Fatal编程技术网

使用php解析日志文件并存储在数组中

使用php解析日志文件并存储在数组中,php,arrays,parsing,logging,Php,Arrays,Parsing,Logging,我试图解析日志文件并将其存储在数组中。新信息每1小时添加一次(cronjob),我希望确保在脚本查询数据库后,如果我得到新信息(主机名),然后发送电子邮件,否则我们不应该发送电子邮件。我有以下格式的日志文件: Oct 31 13:45:01 Monitoring [info] Hostname : abc@abc.com Oct 31 13:45:01 Monitoring [info] A count : 2195073 Oct 31 13:45:01 Monitoring [info] B

我试图解析日志文件并将其存储在数组中。新信息每1小时添加一次(cronjob),我希望确保在脚本查询数据库后,如果我得到新信息(主机名),然后发送电子邮件,否则我们不应该发送电子邮件。我有以下格式的日志文件:

Oct 31 13:45:01 Monitoring [info] Hostname : abc@abc.com
Oct 31 13:45:01 Monitoring [info] A count : 2195073
Oct 31 13:45:01 Monitoring [info] B count : 2191572
Oct 31 13:50:02 Monitoring [info] Hostname : abc@abc.com
Oct 31 13:50:02 Monitoring [info] A count : 2195073
Oct 31 13:50:02 Monitoring [info] B count : 2191572
我希望只比较主机名,并根据该比较/逻辑决定发送电子邮件警报。因此,我们希望解析上述日志文件并将其存储在数组中以执行上述操作。我必须在类下创建一个新函数来解析日志文件

有人能帮我创建一个函数来解析上面的日志文件吗


提前谢谢

这里可能还需要一点时间;你试过什么?基本上,您只需要获取每一行并根据需要对其进行解析。有很多日志分析器可用


如果您有类似此示例的日志,请尝试:

$str = "Oct 31 13:45:01 Monitoring [info] Hostname : abc@abc.com"; $pos = strpos($str, 'Hostname'); if($pos !== null){ echo substr($str, $pos+11); // hostname } $str=“10月31日13:45:01监控[info]主机名:abc@abc.com"; $pos=strpos($str,'Hostname'); 如果($pos!==null){ echo substr($str,$pos+11);//主机名 }
我尝试过一种方法,但它就像解析一个简单的日志文件,只使用逗号作为分隔符。对于上面的日志文件,我想我必须使用regex为每个主机名创建数组。