我们有时需要记录用户或者后端的某个操作事件的运行情况,可以使用后端语言如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; }
日志写入和读取类
写入和读取日志的功能我们经常要用到,所以我将写入和读取功能整理成类,方便调用。
<"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; } } "htmlcode">$filename = "logs/log_".date("Ymd",time()).".txt"; $msg = '写入了日志'; $Log = new Log(); //实例化 $Log->writeLog($filename,$msg); //写入日志 $loglist = $Log->readLog($filename); //读取日志源码下载:http://xiazai.jb51.net/201607/yuanma/phplog(jb51.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 纪钧瀚《钢琴阅读时光 雨中书店聆听轻音乐》[320K/MP3][203.44MB]
- 群星.1981-名曲65(2014环球复黑王·百代篇)【EMI百代】【WAV+CUE】
- 陈淑桦.1990-娃娃的故事【柯达】【WAV+CUE】
- 戴梅君.2011-问签诗【美华】【WAV+CUE】
- 李国祥.1995-九五变奏【嘉音】【WAV+CUE】
- 许景淳.1992-你来自何方【全美唱片】【WAV+CUE】
- 石欣卉.2007-剧欣卉集·完整电视剧主题精丫华纳】【WAV+CUE】
- 群星.2005-LOVE情歌集VOL.5.2CD【正东】【WAV+CUE】
- 孙悦.1996-伙伴【正大国际】【WAV+CUE】
- 纪钧瀚《钢琴阅读时光 雨中书店聆听轻音乐》[FLAC/分轨][399.62MB]
- 证声音乐图书馆《走向自然 疗心爵士乐》[320K/MP3][87.4MB]
- 证声音乐图书馆《走向自然 疗心爵士乐》[FLAC/分轨][184.94MB]
- 陈慧娴.2018-Priscilla-Ism演唱会3CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 郑秀文.1999-我应该得到(国)【华纳】【WAV+CUE】
- 陈家慧.2011-钢琴酒吧2CD【龙吟唱片】【WAV+CUE】