最近在改一個古老祖傳程式碼,可惜連個列印日誌功能都沒有,沒有框架加持,才發現自己是多麼的弱雞。
在看別人的程式碼的時候發現了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 協議》,轉載必須註明作者和本文連結