這是單例模式寫的一個方法
class Logger{
static private $_instance;
//單例模式
static public function getInstance()
{
if (NULL === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
static public function log($msg,$br=0,$filename='')
{
//格式化時間
$time = date('Ymd');
//設定路徑目錄資訊
$url = './log/'.$time.'.log';
//dirname() 函數傳回路徑中的目錄部分。 https://www.w3school.com.cn/php/func_filesystem_dirname.asp
$dir_name=dirname($url);
//目錄不存在就建立
if(!file_exists($dir_name))
{
//iconv防止中文名亂碼
//mkdir() 函數建立目錄。 https://www.runoob.com/php/func-filesystem-mkdir.html
$res = mkdir(iconv("UTF-8", "GBK", $dir_name),0777,true);
}
//打開檔案資源通道 不存在則自動建立 var_export
$fp = fopen($url,"a");
//輸出分隔符
if ($br == 1){
//數組需要格式化列印
if (is_array($msg)){
fwrite($fp,date("Y-m-d H:i:s")."\r\n".var_export($msg,true)."\r\n");//寫入檔案
}else{
fwrite($fp,date("Y-m-d H:i:s").var_export($msg,true)."\r\n");//寫入檔案
}
fwrite($fp,date("Y-m-d H:i:s").var_export('----------------------------------------------------------------',true)."\r\n");//寫入檔案
}else{
if (is_array($msg)){
fwrite($fp,date("Y-m-d H:i:s")."\r\n".var_export($msg,true)."\r\n");//寫入檔案
}else{
fwrite($fp,date("Y-m-d H:i:s").var_export($msg,true)."\r\n");//寫入檔案
}
}
//自己指令檔案,如果不命名就是以日期為名稱
if (!empty($filename)){
//設定路徑目錄資訊
$url1 = '/.log/'.$filename.'.log';
$dir_name1=dirname($url1);
//目錄不存在就建立
if(!file_exists($dir_name1))
{
//iconv防止中文名亂碼
$res = mkdir(iconv("UTF-8", "GBK", $dir_name1),0777,true);
}
$fp1 = fopen($url1,"a");//打開檔案資源通道 不存在則自動建立
if ($br == 1){
fwrite($fp1,date("Y-m-d H:i:s").var_export('----------------------------------------------------------------',true)."\r\n");//寫入檔案
}
fwrite($fp1,date("Y-m-d H:i:s").var_export($msg,true)."\r\n");//寫入檔案
fclose($fp1);//關閉資源通道
}
fclose($fp);//關閉資源通道
}
}