Logging 不久前,Yii能够打印日志中跟踪的最后2个字符串,现在它在哪里?

Logging 不久前,Yii能够打印日志中跟踪的最后2个字符串,现在它在哪里?,logging,yii,Logging,Yii,Yii我怎么能看到,Yii日志文件中记录字符串的代码的哪一部分?我还没有尝试过,但您可以更新或扩展阻塞器->日志()方法,将一些回溯信息添加到日志消息中,例如 public function log($message,$level='info',$category='application') { $e = new Exception; $message .= $e->getTraceAsString(); $this->_logs[]=a

Yii我怎么能看到,Yii日志文件中记录字符串的代码的哪一部分?

我还没有尝试过,但您可以更新或扩展
阻塞器->日志()
方法,将一些回溯信息添加到日志消息中,例如

public function log($message,$level='info',$category='application')
{
       $e = new Exception;
       $message .= $e->getTraceAsString();

       $this->_logs[]=array($message,$level,$category,microtime(true));
       $this->_logCount++;
       if($this->autoFlush>0 && $this->_logCount>=$this->autoFlush && !$this->_processing)
       {
           $this->_processing=true;
           $this->flush($this->autoDump);
           $this->_processing=false;
       }
}
因此,现在每个日志行都包含一个回溯跟踪

有关获取“回溯”或“调用堆栈”的更多信息,请阅读本文-

如果此处有问题,请更正。

我不确定是否理解您的问题,但跟踪日志(protected/runtime/trace.log)已指示
Yii::app()->trace()
调用所在的文件名(第#行),如以下示例日志记录:

2012/01/11 12:54:28 [trace] [system.db.CDbCommand] Querying SQL: SELECT * FROM `folks` `f` WHERE `f`.`idfolks` IS NULL LIMIT 1
in /home/hobs/src/appname/protected/controllers/SiteController.php (970)
in /home/hobs/src/appname/index.php (14)
假设您已经在protected/config/main.php中设置了跟踪日志路由器

'log'=>array(
  'class'=>'CLogRouter',
  'routes'=>array(
    array(
      'class'=>'CFileLogRoute',
      'levels'=>'trace', //, info, error, warning', // empty means all levels = default
      //'categories'=>'',//'application',// system.*', // default = empty = all categories
      'logFile'=>'trace.log',
    ),
    ...
在index.php(或您正在使用的任何条目文件)中添加以下行:

defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',2);
在创建应用程序调用之前将其复制到文件

将末尾的数字更改为所需堆栈跟踪的行数

唯一真正的限制是它出现在每个日志消息上,无法过滤