ThinkPHP 日志,異常與調試


日志:
    級別:
        EMERG:嚴重錯誤,導致系統崩潰無法使用;
        ALERT:警戒性錯誤, 必須被立即修改的錯誤;
        CRIT:臨界值錯誤, 超過臨界值的錯誤:
        ERR:一般性錯誤;
        WARN:警告性錯誤, 需要發出警告的錯誤;
        NOTICE:通知,程序可以運行但是還不夠完美的錯誤;
        INFO:信息,程序輸出信息;
        DEBUG:調試,用於調試信息;
        SQL:SQL語句,該級別只在調試模式開啟時有效;
    配置:
        LOG_RECORD=>TRUE:開起日志記錄;
        LOG_LEVEL=>EMERG,ALERT,CRIT,ERR:所要記錄的日志級別;
        LOG_FILE_SIZE:限制日志文件的大小。超出限定大小的文件會形成備份文件;
        LOG_DEST:設置日志發送的郵箱;
        LOG_EXTRA:設置郵件的發送人;
    記錄方式:
        SYSTEM:日志發送到PHP的系統日志記錄,常量標識:0;
        MAIL:日志通過郵件方式發送,常量標識:1;
        FILE:日志通過文件方式記錄,為默認方式,常量標識:2;
        SAPI:日志通過SAPI方式記錄,常量標識:4;
    記錄格式:記錄時間 訪問URL|日志級別:日志信息。其中的時間格式可以動態配置:Log::$format=[Y-m-d H:i:s],默認使用[c];
    手動記錄:
        Log::write($message,$level=self::ERR,$type='',$destination='',$extra='');
            message(必須):要記錄的日志信息,字符串;
            level(可選):要記錄的日志級別,默認為ERR 錯誤;
            type(可選):日志記錄方式,默認為空取LOG_TYPE配置;
            destination(可選):日志記錄目標,默認為空自動生成或LOG_DEST配置;
            extra(可選):日志記錄額外參數,默認為空取LOG_EXTRA配置;
        Log::record($message,$level=self::ERR,$record=false);
            message(必須):要記錄的日志信息,字符串
            level(可選):要記錄的日志級別,默認為ERR 錯誤
            record(可選):是否強制記錄,默認為false表示判斷LOG_LEVEL配置
        Log::save($type='',$destination='',$extra='');
            type(可選):日志記錄方式,默認為空取LOG_TYPE配置;
            destination(可選):日志記錄目標,默認為空自動生成或LOG_DEST配置;
            extra(可選):日志記錄額外參數,默認為空取LOG_EXTRA配置;
        Log::record方法必須結合Log::save方法才能完成日志記錄,因為record方法只是把日志信息保存到內存,並沒有真正寫入日志,直到調用Log::save方法;

異常:
    出現異常:調試模式下系統發生錯誤,也可以使用ThinkPHP定義的throw_exception()拋出異常;
    throw_exception($msg, $type='ThinkException', $code=0);
        msg(必須):要拋出的異常信息,字符串
        type(可選):異常類型,默認為ThinkException,如果異常類型不存在,則會調用系統的halt方法直接輸出錯誤信息。
        code(可選):異常代碼,默認為0
    或:throw new ThinkException();throw new InfoException();
    異常模版:
        系統內置的異常模版在ThinkPHP/Tpl/think_exception.tpl,可以通過修改系統模版來修改異常顯示界面;
        EXCEPTION_TMPL_FILE:修改系統默認的異常模版文件;
        異常模版使用的的異常變量:
            $e['file']:異常文件名;
            $e['line']:異常所在的行;
            $e['message']:異常信息;
            $e['trace']:異常的詳細Trace信息;
    異常顯示:
        SHOW_ERROR_MSG=>FALSE:關閉錯誤信息顯示;
        ERROR_MESSAGE=>MSG:設置統一的異常顯示;
        ERROR_PAGE=>URL:設置統一的異常顯示頁面;

調試:
    顯示運行狀態包括運行時間,內存開銷,數據庫和緩存讀寫次數的詳細運行數據等,具體配置如下:
        'SHOW_RUN_TIME'=>true,                // 運行時間顯示
        'SHOW_ADV_TIME'=>true,                // 顯示詳細的運行時間
        'SHOW_DB_TIMES'=>true,                // 顯示數據庫查詢和寫入次數
        'SHOW_CACHE_TIMES'=>true,            // 顯示緩存操作次數
        'SHOW_USE_MEM'=>true,                // 顯示內存開銷
        'SHOW_LOAD_FILE' =>true,            // 顯示加載文件數
        'SHOW_FUN_TIMES'=>true ,            // 顯示函數調用次數
        默認的情況下,運行時間的顯示是在Html頁面的最后,如果需要在制定位置顯示,只需要在Html模板文件中相關位置加上 {__RUNTIME__} 即可,系統在輸出頁面的時候會自動在該位置替換運行時間的信息顯示;
    頁面Trace:
        Trace包括:請求時間,當前頁面,請求協議,運行信息,會話ID,日志記錄和文件加載情況;
        SHOW_PAGE_TRACE=>TRUE:設置顯示Trace信息。無論調試模式和部署模式都有效;
        TMPL_TRACE_FILE=>URL:定制Trac頁面。其頁面內容可以:
            $_trace=trace();
            foreach($_trace as $key => $info){
                echo $key.':'.$info.'<br/>';
            }
        定制Trace信息:
            目錄:App/Con/trace.php;
            返回值:return array(
                '當前頁面'=>$_SERVER['PHP_SELF'],
                '通信協議'=>$_SERVER['SERVER_PROTOCOL'],
                ..........//其他信息
            );
        Action方法中使用trace()增加Trace信息:
            trace('執行時間',$runTime);
            trace('Name的值',$name);
            trace('GET變量',dump($_GET,false));
            trace方法支持批量設置,例如:
            $info['執行時間']=$runTime;
            $info['Name的值'] = $name;
            $info['GET變量']=dump($_GET,false);
            trace($info);
            這種方式的trace信息顯示在頁面Trace信息的最開始。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM