遍历日志文件并打印

Posted 春暖花开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历日志文件并打印相关的知识,希望对你有一定的参考价值。

<?php
error_reporting(E_ALL);
ini_set(‘display_errors‘, 1);

function load($file)
{
//No.1
//开始写代码,读取日志文件
$file = fopen($file,‘r‘);
$contents = array();
while(!feof($file))
{
$contents[] = fgets($file);
}
return $contents;
}

function eliminate($lines)
{
$new = array();
foreach($lines as $line)
{
list($dul,) = explode("\t", $line, 2);

if(isset($new[$dul]))
{
$line = str_replace($dul,"\t",$line);
}
$new[$dul][] = $line;
}
return $new;
}

function qSort($array)
{
$length = count($array);
if(count($array)<=1)
return $array;
//No.2
//开始写代码,对时间戳进行从小到大排序 快速排序
$left_array=$right_array=array();
//使用for循环进行遍历,把第一个元素当做比较的对象
for($i=1;$i<$length;$i++)
{
//判断当前元素的大小
if($array[$i]<$array[0]){
$left_array[]=$array[$i];
}else{
$right_array[]=$array[$i];
}
}
//递归调用
$middle=$array[0];

//end_code
return array_merge(qSort($left_array),array($middle),qSort($right_array));
}

$newFile = ‘‘;
$data = eliminate(load(‘aa.log‘));
//No.3
//开始写代码,调用函数,将日志中的数据排序,并将重新排好序的数据写入文件
$keys = array_keys($data);
//sort($keys); //其实不用快速排序 直接将键值sort即可
$keys = qSort($keys);
$newsFile = array();
foreach($keys as $value)
{
$newsFile[] = implode(‘\n‘, $data[$value]);
}
$newsFile = implode(‘ ‘, $newsFile);
//end_code
file_put_contents(‘bb.dat‘,$newsFile);
?>

 

面试题:考察 快速排序,文件的用法

当时时间的限制没做出来,后来花了一个小时终于弄出来。看来我还是很笨的。。。加油。。。找工作。。。

以上是关于遍历日志文件并打印的主要内容,如果未能解决你的问题,请参考以下文章

awk 日期到日志文件中的纪元并打印其他列

如何使用 go.uber.org/zap lib 以不同的日志级别打印不同的颜色,并根据日志级别将日志附加到不同的文件?

删除指定目录下过期文件并打印日志

eclipse能打印日志,但是生成的日志文件为空是怎么回事

为何要打印日志?C++在高并发下如何写日志文件(附源码)?

日志文件跟踪工具