PHP读日志文件写入日志的流程是怎样的呢?

我们有时需要记录用户或后端的某个操作事件的操作。可以使用PHP等后端语言将操作结果记录在日志文件中,方便测试和查找问题。尤其是后端和前端运行的,不能直接看到操作的结果,那么可以用日志文件来记录。如果经常处理支付宝接口、微信卡接口等一些接口开发php文件格式还原,日志记录肯定是不行的。

我们说的PHP日志记录是将日志信息写入日志文件,不同于内存日志。写日志的过程是:打开日志文件(如果不存在就新建一个),然后把日志内容追加到日志文件的后面,最后关闭日志文件。

在本文中,我们将日志内容保存为 json 格式,以便在需要时方便阅读。

PHP 写日志文件

PHP 需要打开、写入和关闭文件才能写入日志文件。 PHP有fopen()、()和()三个函数对应,另外一个函数()也可以将字符串写入文件,实际上这个函数实现了依次调用fopen()、()和()。所以我们使用 () 非常简洁。值得注意的是,在文件后面追加内容时,需要带上参数:.

在实际操作中,我们可能会遇到日志文件过大的情况,所以我们设置了一个最大值。当日志文件的大小超过这个最大值时,会备份日志文件php文件格式还原,然后生成一个新的日志文件来记录新的日志内容。

在写日志之前,我们将日志内容格式化为json格式,所以需要将内容转换成JSON格式,然后写入文件。当然你也可以不使用json,或者改成其他工具和程序(比如日志分析工具)可以读取的格式。简而言之,我们写的内容在需要的时候方便阅读。

 function writeLog($filename,$msg){ 
 $res = array(); 
 $res[‘msg‘] = $msg; 
 $res[‘logtime‘] = date("Y-m-d H:i:s",time()); 
 
 //如果日志文件超过了指定大小则备份日志文件 
 if(file_exists($filename) && (abs(filesize($filename)) > 1024000)){ 
  $newfilename = dirname($filename).‘/‘.time().‘-‘.basename($filename); 
  rename($filename, $newfilename); 
 } 
 
 //如果是新建的日志文件,去掉内容中的第一个字符逗号 
 if(file_exists($filename) && abs(filesize($filename))>0){ 
  $content = ",".json_encode($res); 
 }else{ 
  $content = json_encode($res); 
 } 
 
 //往日志文件内容后面追加日志内容 
 file_put_contents($filename, $content, FILE_APPEND); 
 } 

PHP 读取日志文件

必要时,我们会读取日志内容进行分析。同理,我们使用PHP的()函数直接读取内容,转成json格式方便调用。

 function readLog($filename){ 
 if(file_exists($filename)){ 
  $content = file_get_contents($filename); 
  $json = json_decode(‘[‘.$content.‘]‘,true); 
 }else{ 
  $json = ‘{"msg":"The file does not exist."}‘; 
 } 
 return $json; 
 } 

日志写作与阅读课

我们经常需要用到写日志和读日志的功能,所以我把写和读的功能分门别类,方便调用。

 $this->maxsize)){ 
  $newfilename = dirname($filename).‘/‘.time().‘-‘.basename($filename); 
  rename($filename, $newfilename); 
 } 
 
 //如果是新建的日志文件,去掉内容中的第一个字符逗号 
 if(file_exists($filename) && abs(filesize($filename))>0){ 
  $content = ",".json_encode($res); 
 }else{ 
  $content = json_encode($res); 
 } 
 
 //往日志文件内容后面追加日志内容 
 file_put_contents($filename, $content, FILE_APPEND); 
 } 
 
 
 //读取日志 
 public function readLog($filename){ 
 if(file_exists($filename)){ 
  $content = file_get_contents($filename); 
  $json = json_decode(‘[‘.$content.‘]‘,true); 
 }else{ 
  $json = ‘{"msg":"The file does not exist."}‘; 
 } 
 return $json; 
 } 
} 
 ?> 

使用方法:

$filename = "logs/log_".date("Ymd",time()).".txt"; 
$msg = ‘写入了日志‘; 
$Log = new Log(); //实例化 
$Log->writeLog($filename,$msg); //写入日志 
$loglist = $Log->readLog($filename); //读取日志 

源代码下载:().rar

文章来源:https://www.songbingjia.com/php/show-10930.html

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享