开启SHOW_PAGE_TRACE时,解决firephp trace 控制台下不显示sql信息

浏览:1349 发布日期:2015/09/24 分类:技术分享 关键字: bug
在conf目录下增加tags.php<?php 
return array(
   'app_end'=>array(
       'Behavior\FireShowPageTraceBehavior'
       
   )
);
配置里增加 'FIRE_SHOW_PAGE_TRACE' => true

发现firephp下会出现trace,但sql项是空的
调试了下发现以下问题

FireShowPageTraceBehavior.class.php
39行 左右    // 行为扩展的执行入口必须是run
    public function run(&$params){
        if(C('FIRE_SHOW_PAGE_TRACE',null,true)) $this->showTrace();
    }
但 Think.class.php
331行左右      if((defined('IS_AJAX') && IS_AJAX) || !C('SHOW_PAGE_TRACE')  || $record) {  
                //这里用了SHOW_PAGE_TRAC 并没有判断 FIRE_SHOW_PAGE_TRACE情况,所以把sql记录到日志里了,看了下log文件里面是有sql的
                //将 !C('SHOW_PAGE_TRACE') 更改为 (!C('SHOW_PAGE_TRACE') && !C('FIRE_SHOW_PAGE_TRACE')),然后在配置里增加 'FIRE_SHOW_PAGE_TRACE' => true,即可
                Log::record($info,$level,$record);
            }else{
                if(!isset($_trace[$level]) || count($_trace[$level])>C('TRACE_MAX_RECORD')) {
                    $_trace[$level] =   array();
                }
                $_trace[$level][]   =   $info;
            }
        }
解决办法:

增加了条件,(!C('SHOW_PAGE_TRACE') && !C('FIRE_SHOW_PAGE_TRACE')),即开启了其中任何一个,就不写到日志中,而是显示出sql


另发现会报错,new Exception()时少了个 \
修改成以下代码
1473行 return new \Exception($Message);
最佳答案
评论() 相关
后面还有条评论,点击查看>>