Home  >  Article  >  php教程  >  PHP records and reads JSON format log files

PHP records and reads JSON format log files

WBOY
WBOYOriginal
2016-07-06 13:34:201160browse

We use JSON format data a lot but log form storage is not used much. However, here we have an example of PHP recording and reading JSON format log files. Let’s take a look.

<script>ec(2);</script>

We sometimes need to record the operation of a user or back-end operation event. You can use a back-end language such as PHP to record the operation results into a log file to facilitate testing and problem finding. Especially those that run on the back end and the front end cannot directly see the running results, then you can use log files to record them. If you often deal with some interface development such as Alipay interface and WeChat card interface, logging is essential. Less.


The PHP logging we are talking about is writing the log information into a log file, which is different from the memory log. The process of writing the log is: open the log file (create it if it does not exist), then append the log content to the end of the log file, and finally close the log file.
In this article, we save the log content in json format to facilitate direct reading when necessary.

PHP writes log file

Writing log files in PHP requires operations such as opening, writing and closing files. PHP has three functions corresponding to them: fopen(), fwrite() and fclose(), and another function file_put_contents() which can also handle strings. To write a file, in fact, this function implements calling fopen(), fwrite() and fclose() in sequence. So we use file_put_contents() very concisely. It is worth noting that when appending content to the file, you need to bring the parameter: FILE_APPEND.
In actual operation, we may encounter a situation where the log file is too large, so we set a maximum value. When the log file size exceeds the maximum value, back up the log file and then regenerate a new log file for recording. New log content.

Before writing the log, we format the log content in json, so we need to convert the content into JSON format and then write it to the file. Of course, you can also use json instead of json, or change it to a format that can be read by other tools (such as log analysis tools). In short, the content we write is convenient and can be easily read when necessary.

function writeLog($filename,$msg){
          $res = array();
          $res['msg'] = $msg;
          $res['logtime'] = date("Y-m-d H:i:s",time());

//If the log file exceeds the specified size, back up the log file
If(file_exists($filename) && (abs(filesize($filename)) > 1024000)){
$newfilename = dirname($filename).'/'.time().'-'.basename($filename);
                rename($filename, $newfilename);
          }

​​​​ //If it is a new log file, remove the first character comma in the content
If(file_exists($filename) && abs(filesize($filename))>0){
                $content = ",".json_encode($res);
         }else{
               $content = json_encode($res);
          }

//Append the log content to the end of the log file
          file_put_contents($filename, $content, FILE_APPEND);
}
PHP read log file
When necessary, we will read the log content for analysis. We also use PHP's file_get_contents() function to directly read the content and convert it into json format for easy calling.
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;
}

Log writing and reading classes

We often use the functions of writing and reading logs, so I organized the writing and reading functions into classes for easy calling.
/*
* Log class
* Generate a log file every day. When the file exceeds the specified size, back up the log file and regenerate a new log file
*/
class Log {

Private $maxsize = 1024000; //Maximum file size 1M
     
//Write log
Public function writeLog($filename,$msg){
          $res = array();
          $res['msg'] = $msg;
          $res['logtime'] = date("Y-m-d H:i:s",time());

//If the log file exceeds the specified size, back up the log file
If(file_exists($filename) && (abs(filesize($filename)) > $this->maxsize)){
$newfilename = dirname($filename).'/'.time().'-'.basename($filename);
                rename($filename, $newfilename);
          }

​​​​ //If it is a new log file, remove the first character comma in the content
If(file_exists($filename) && abs(filesize($filename))>0){
                $content = ",".json_encode($res);
         }else{
               $content = json_encode($res);
          }

//Append the log content to the end of the log file
          file_put_contents($filename, $content, FILE_APPEND);
}


//Read log
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;
}
}
?>


How to use:

$filename = "logs/log_".date("Ymd",time()).".txt";
$msg = 'Log written';
$Log = new Log(); //Instantiation
$Log->writeLog($filename,$msg); //Write log
$loglist = $Log->readLog($filename); //Read log

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn