PHP記錄和讀取JSON格式日誌檔案

2022-10-06 09:15:11 字數 1897 閱讀 2913

我們有時需要記錄使用者或者後端的某個操作事件的運**況,可以使用後端語言如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)

//如果是新建的日誌檔案,去掉內容中的第乙個字元逗號

if(file_exists($filename) && abs(filesize($filename))>0)else

//往日誌檔案內容後面追加日誌內容

file_put_contents($filename, $content, file_append);

}php讀日誌檔案

必要時,我們會讀取日誌內容進行分析,同樣我們使用php的file_get_contents()函式,直接將內容讀取,並且轉換成json格式,方便呼叫。

function readlog($filename)else';

} retu程式設計客棧rn $json;

}日誌寫入和讀取類

寫入和讀取日誌的功能我們經常要用到,所以我將寫入和讀取功能整理成類,方便呼叫。

<?php /*

* 日誌類

* 每天生成乙個日誌檔案,當檔案超過指定大小則備份日誌檔案並重新生成新的日誌檔案

*/ class log

//如果是新建的日誌檔案,去掉內容中的第乙個字元逗號

if(file_exists($filename) && abs(filesize($filename))>0)else

//往日誌檔案內容後面追加日誌內容

file_put_contents($filename, $content, file_append);

} //讀取日誌

public function readlog($filename)else';

} return $json;

} }

?>

使用方法:

$filename = "logs/log_".date("ymd",time()).".txt";

$msg = '寫入了日誌';

$log = new log(); //例項化

$log->writelog($filename,$msg); //寫入日誌

$loglist = $log->readlog($filename); //讀取日誌

原始碼**:

本文標題: php記錄和讀取json格式日誌檔案

本文位址:

PHP記錄和讀取JSON格式日誌檔案

我們講的php記錄日誌,就是將日誌資訊寫入到乙個日誌檔案中,區別於記憶體日誌。寫入日誌的流程是 開啟日誌檔案 如果不存在則新建立 然後將日誌內容追加到日誌檔案的後面,最後關閉日誌檔案。本文中,我們將日誌內容以json個格式儲存,方便必要時直接讀取。實際執行中,我們有可能會遇到日誌檔案超大的情況,所以...

php讀取本地json檔案

1.data.json檔案 2.php檔案 echo 獲取頁面傳來的引數 type get type proid get id echo type.產品type echo proid.產品id 從檔案中讀取資料到php變數 json string file get contents json dat...

PHP檢測json格式資料

首先要記住json encode返回的是字串,而json decode返回的是物件 判斷資料不是json格式 複製 如下 function is not json str 判斷資料是合法的json資料 php版本大於5.3 複製 如下 function is json string json las...