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