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

电脑杂谈  发布时间:2019-06-09 06:29:16  来源:网络整理

php 日志管理_php日志文件在哪_log4j 日志 文件

2、bps的ws接口被调用,首先记录ws调用名称、流程实例id,工作项id等(日志实体中的属性),然后进行相应的流程操作、流程日志记录,返回日志表实体,成功返回整个日志实体,方便用户的落地处理,失败则日志实体为null。logs:储存客户端运行过程中的所有日志,类似于健康报告,在客户端未开启日志记录以前,这里面只存放更新日志,开启日志记录之后才会显示客户端的运行情况,因为这个会记录每次的运行日志php日志文件在哪,所以开了之后就会随着时间推移这个文件夹的占用硬盘越来越多的空间了。飞机飞行过程中,会有黑盒子(飞行数据记录器)记录飞行过程中的一切. 如果有出现什么问题,人们可以通过日志数据来搞清楚到底发生了什么. 对于系统开发、调试以及运行,记录日志都是同样的重要. 如果没有日志记录,程序崩溃时你几乎就没办法弄明白到底发生了什么事情.。

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

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

log4j 日志 文件_php 日志管理_php日志文件在哪

PHP写日志文件

fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名, 或指针 变量,例如:fputs(“abcd“,fp)。aof 文件是一个只进行追加操作的日志文件(append only log), 因此对 aof 文件的写入不需要进行 seek ,即使日志因为某些原因而包含了未写入完整的命令(比如写入时磁盘已满php日志文件在哪,写入中途停机,等等), redis-check-aof 工具也可以轻易地修复这种问题。当用户操作数据时,就会产生大量的日志信息并存储在重做日志缓冲区,当oracle系统满足一定条件时,日志写入进程(lgwr)会将日志信息写入到重做日志文件组中,当发生日志切换时(写入操作正要从一个日志文件组切换到另一组时),就会启动检查点进程,dba还可以通过修改初始化参数文件spfile中的checkpoint_process参数为true来启动检查点进程。

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

log4j 日志 文件_php 日志管理_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日志文件在哪_log4j 日志 文件_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日志文件在哪_log4j 日志 文件_php 日志管理

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

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

源码下载:(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-104730-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 苏氏
        苏氏

        那块地丢了就等于把极其重要的战略要塞拱手让给战略对手

      热点图片
      拼命载入中...