日志:
级别:
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信息的最开始。