足球游戏_中国足彩网¥体育资讯$

PHP记录和读取JSON格式日志文件
来源:易贤网 阅读:737 次 日期:2016-08-15 15:05:25
温馨提示:易贤网小编为您整理了“PHP记录和读取JSON格式日志文件”,方便广大网友查阅!

我们有时需要记录用户或者后端的某个操作事件的运行情况,可以使用后端语言如PHP将操作结果记录到日志文件中,方便测试和查找问题。尤其是这些在后端运行的而前端不能直接看到运行结果的,那么就可以用日志文件记录下来,如果你经常跟一些接口开发如支付宝接口、微信卡券接口打交道的话,日志记录就必不可少了。 

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

本文中,我们将日志内容以json个格式保存,方便必要时直接读取。

PHP写日志文件

PHP写日志文件需要打开、写入和关闭文件等操作,PHP有fopen(),fwrite()和fclose()三个函数与之对应,而另一个函数file_put_contents()它也能字符串写入文件,其实这个函数实现了依次调用 fopen(),fwrite() 以及 fclose()。所以我们使用file_put_contents()非常简洁。值得注意的是,往文件后面追加内容时需要带上参数:FILE_APPEND。

实际运行中,我们有可能会遇到日志文件超大的情况,所以我们设置一个最大值,当日志文件大小超过这个最大值时,将此日志文件备份好,然后重新生成一个新的日志文件来记录新的日志内容。

在写日志前,我们将日志内容进行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的file_get_contents()函数,直接将内容读取,并且转换成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; 

日志写入和读取类

写入和读取日志的功能我们经常要用到,所以我将写入和读取功能整理成类,方便调用。

<?php 

/* 

 * 日志类 

 * 每天生成一个日志文件,当文件超过指定大小则备份日志文件并重新生成新的日志文件 

*/

class Log { 

 private $maxsize = 1024000; //最大文件大小1M 

 //写入日志 

 public 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)) > $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); //读取日志 

以上就是本文的全部内容,希望对大家的学习有所帮助

中国足彩网信息请查看网络编程
易贤网手机网站地址:PHP记录和读取JSON格式日志文件
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 足球游戏_中国足彩网¥体育资讯$ 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65099533/13759567129 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标