php基礎常用程式碼示例,利用 debug_backtrace 自定義個基本的日誌列印函式

木大大發表於2021-05-30

最近在改一個古老祖傳程式碼,可惜連個列印日誌功能都沒有,沒有框架加持,才發現自己是多麼的弱雞。

在看別人的程式碼的時候發現了php的這麼個函式 debug_backtrace()
著實解決了我的問題痛點,可以定義一個函式記錄呼叫函式時的檔名和行數,從而知道對應的列印位置了。

/**
 * 自定義日誌列印,將日誌資訊寫入指定檔案,並記錄當前呼叫的檔名與行數
 * @param $data mixed 寫入檔案的資料
 * @param $file string 檔案路徑
 */
function put_log($data,$file){

    // 遞迴建立資料夾
    function created_dir( $dir ){
        return  is_dir ( $dir ) or created_dir(dirname( $dir )) and  mkdir ( $dir , 0777);
    }

    $traces = debug_backtrace();

    if(dirname($file)!='.'){
        created_dir( dirname($file) );
    }

    $str = date('Y-m-d H:i:s')."\n";
    foreach ($traces as $trace){
        $str .= $trace["file"]." 檔案第【".$trace["line"]."】行 data:\n";
    }
    $str .= json_encode($data)."\n\n";

    file_put_contents($file,$str,FILE_APPEND);
}

put_log('sss','ss/s/a.txt');
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章