ホームページ >php教程 >PHP源码 >PHP は JSON 形式のログ ファイルを記録および読み取ります

PHP は JSON 形式のログ ファイルを記録および読み取ります

WBOY
WBOYオリジナル
2016-07-06 13:34:201197ブラウズ

JSON 形式のデータはよく使用されますが、ログ形式のストレージはあまり使用されません。ここでは、PHP による JSON 形式のログ ファイルの記録と読み取りの例を見てみましょう。

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

ユーザーまたはバックエンド操作イベントの実行ステータスを記録する必要がある場合があります。PHP などのバックエンド言語を使用して、テストと問題の発見を容易にするために操作結果をログ ファイルに記録できます。特にバックエンドとフロントエンドで実行されるものは実行結果を直接見ることができないため、Alipay インターフェイスや WeChat カード インターフェイスなどのインターフェイス開発を頻繁に行う場合は、ログ ファイルを使用して結果を記録できます。足りない。


ここで説明している PHP ログとは、ログ情報をログ ファイルに書き込むことであり、メモリ ログとは異なります。ログを書き込むプロセスは次のとおりです。ログ ファイルを開き (存在しない場合は作成します)、次にログ ファイルの末尾にログの内容を追加し、最後にログ ファイルを閉じます。
この記事では、必要なときに直接読み取れるように、ログの内容を json 形式で保存します。

PHP書き込みログファイル

PHP でログ ファイルを書き込むには、ファイルのオープン、書き込み、クローズなどの操作が必要です。PHP には、それらに対応する関数 fopen()、fwrite()、および fclose() と、文字列ファイルを書き込むこともできるもう 1 つの関数 file_put_contents() があります。実際、この関数は fopen()、fwrite()、fclose() を順番に呼び出すことを実装しています。したがって、file_put_contents() を非常に簡潔に使用します。ファイルにコンテンツを追加するときは、パラメータ FILE_APPEND を指定する必要があることに注意してください。
実際の運用では、ログファイルが大きくなりすぎる場合があるため、ログファイルのサイズが最大値を超えた場合には、ログファイルをバックアップし、新たにログファイルを再生成して記録します。ログの内容。

ログを書き込む前に、ログの内容を json でフォーマットするため、内容を JSON 形式に変換してからファイルに書き込む必要があります。もちろん、json の代わりに json を使用したり、他のツール (ログ分析ツールなど) で読み取れる形式に変更したりすることもできます。つまり、私たちが書くコンテンツは便利であり、必要なときに簡単に読むことができます。

関数 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); }その他{
$content = json_encode($res); }

//ログファイルの内容の後にログの内容を追加します
file_put_contents($filename, $content, FILE_APPEND); }
PHP読み取りログファイル
必要に応じて、分析のためにログの内容を読み取ります。また、PHP の file_get_contents() 関数を使用して内容を直接読み取り、呼び出しやすいように json 形式に変換します。
関数 readLog($filename){
If(file_exists($filename)){
$content = file_get_contents($filename); $json = json_decode('['.$content.']',true); }その他{
$json = '{"msg":"ファイルが存在しません。"}'; }
$json を返す
}

ログの書き込みと読み取りのクラス

ログの書き込みと読み取りの関数をよく使うので、呼び出しやすいように書き込みと読み取りの関数をクラスに整理しました。
/*
* ログカテゴリ
* ログファイルを毎日生成します。ファイルが指定されたサイズを超えた場合、ログファイルをバックアップし、新しいログファイルを再生成します
*/
クラスログ {

プライベート $maxsize = 1024000 //最大ファイルサイズ 1M
;
//ログに書き込む
パブリック関数 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); }その他{
$content = json_encode($res); }

// ログ ファイルの内容の後にログの内容を追加します
file_put_contents($filename, $content, FILE_APPEND); }


//ログを読む
パブリック関数 readLog($filename){
If(file_exists($filename)){
$content = file_get_contents($filename); $json = json_decode('['.$content.']',true); }その他{
$json = '{"msg":"ファイルが存在しません。"}'; }
$json を返す
}
}
?>


使用方法:

$filename = "logs/log_".date("Ymd",time()).".txt"; $msg = 'ログが書き込まれました'; $Log = new Log() //インスタンス化
; $Log->writeLog($filename,$msg) //ログを書き込みます
$loglist = $Log->readLog($filename) //ログを読み取ります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。