Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 727|回复: 0

ThinkPHP 日志,异常与调试

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-9-6 15:54:27 | 显示全部楼层 |阅读模式

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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 02:10 , Processed in 0.055426 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表