PHP寫一個日志文件記錄方法

這是單例模式寫的一個方法

<?php

class Logger{

    static private $_instance;

    //單例模式
    static public function getInstance()
    {
        if (NULL === self::$_instance) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * @param $msg  提示信息,需要自己組合拼接,為空則是虛線分割
     * @param integer $br 是否用虛線分割
     * @param string $filename 在默認的文件里面額外生成一個當前名稱的文本,不能使用中文,只能使用英文、數字
     */
    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);//關閉資源通道
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。