<?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);
最佳答案