我们有时需要记录用户或后端的某个操作事件的操作。可以使用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
感谢您的来访,获取更多精彩文章请收藏本站。
