Некоторое время назад Yii смог напечатать последние 2 строки из трассировки в журнале, где он сейчас находится? - PullRequest
1 голос
/ 13 января 2012

Yii, как узнать, какая часть кода записывает строку в файл журнала Yii?

Ответы [ 3 ]

1 голос
/ 16 января 2012

Он находится в index.php (или в любом используемом вами файле ввода), добавьте строку:

defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',2);

в файл перед вызовом создания приложения.

Измените номерв конце - количество строк в трассировке стека, которое вы хотите.

Единственное реальное ограничение - оно появляется в каждом сообщении журнала, нет способа фильтрации.

1 голос
/ 13 января 2012

Я не пробовал, но вы можете обновить или расширить CLogger->log() метод, чтобы добавить некоторую информацию о трассировке в сообщение журнала, что-то вроде

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;
       }
}

Так что теперь каждая строка журнала содержит обратную трассировку.

для получения дополнительной информации о получении 'backtrace' или 'callstack' прочитайте это сообщение - Печать стека вызовов PHP
Пожалуйста, исправьте меня, если что-то здесь не так.

0 голосов
/ 14 января 2012

Я не уверен, что понимаю ваш вопрос, но в журнале трассировки (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',
    ),
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...