0

0

PHP记录和读取JSON格式日志文件

php中文网

php中文网

发布时间:2016-07-06 13:34:20

|

1372人浏览过

|

来源于php中文网

原创

JSON格式的数据我们用到比较多但是日志形式存储用到不多,不过我们这里有一个关于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,或者换作别的工具程序(如日志分析工具)可以阅读的格式。总之,我们写入的内容是方便必要时可以方便读取。

OpenArt
OpenArt

在线AI绘画艺术图片生成器工具

下载

    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;
    }

日志写入和读取类

写入和读取日志的功能我们经常要用到,所以我将写入和读取功能整理成类,方便调用。
/*
 * 日志类
 * 每天生成一个日志文件,当文件超过指定大小则备份日志文件并重新生成新的日志文件
*/
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速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

84

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

24

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

56

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

26

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 12.2万人学习

Pandas 教程
Pandas 教程

共15课时 | 0.9万人学习

C# 教程
C# 教程

共94课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号