日志:
級別:
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信息的最開始。