FirePHP не показывает дополнительные функции при использовании с Zend_Log_Writer_Firebug - PullRequest
1 голос
/ 17 августа 2011

Я разрабатывал Zend Framework целую вечность (с 0.9), и с тех пор эта проблема беспокоит меня.

Я хочу выводить сообщения на консоль FireBug с помощью FirePHP и из приложения Zend Framework 1.11. Я настроил Firebug с файлом application.ini по умолчанию:

resources.log.firebug.writerName = "Firebug"
resources.log.firebug.filterName = "Priority"
resources.log.firebug.filterParams.priority = 7

Теперь я могу видеть сообщения в FireBug, например в IndexController, вызывая недопустимое действие или явно выбрасывая исключения как

throw new Exception("This is my error message", E_USER_ERROR);

Это приводит к тому, что по умолчанию ErrorController обрабатывает исключение и отображает трассировку стека и параметры запроса:

Request Parameters

По умолчанию ErrorController также автоматически регистрирует все сообщения в FireBug:

Firebug Success

Однако, как вы можете видеть, дополнительная информация, такая как трассировка стека или параметры запроса, не отображается, хотя FireBug вполне может это сделать, что можно увидеть на этом снимке экрана FireBug при посещении главной страницы:

Detailed Firebug window

Как указано в документации, Zend_Log_Writer_Firebug будет игнорировать все writerParams , для которых defaultPriorityStyle может быть установлен в TRACE или что-то подобное.

Теперь на мой вопрос: есть ли способ настроить Zend Framework так, чтобы он также отправлял лишние данные (как показано на последнем рисунке) без использования firePHPcore , но с инструментами, поставляемыми с Zend Сам каркас?

С наилучшими пожеланиями и заранее спасибо!

1 Ответ

1 голос
/ 19 августа 2011

Я думаю, что вы не можете добиться того, что говорите, с помощью контроллера ошибок по умолчанию, сгенерированного из zf create project, потому что эти строки

// Log exception, if logger available
if ($log = $this->getLog()) {
    $log->log($this->view->message, $priority, $errors->exception);
    $log->log('Request Parameters', $priority, $errors->request->getParams());
}

т.е. контроллер ошибок по умолчанию регистрирует только сообщение, приоритет и исключение, а средство записи Firebug форматирует их так, как вы показали.

Чтобы добиться того, что вы говорите, вы должны взломать класс Zend_Log_Writer_Firebug, чтобы отобразить трассировку стека с помощью консоли firebug, или вы можете поиграть с пользовательским классом форматирования, добавленным в ваш логгер.

Я сделал нечто подобное, создав почтовый регистратор, который отображает отформатированную трассировку стека исключений в почтовом сообщении и использую ее в производственном процессе для получения отформатированного журнала исключений, отправленных по электронной почте. Вы можете найти его здесь, на Github и здесь , вы можете найти его использование.

Кроме того, вы можете увидеть пример того, как использовать консоль firebug с использованием классов ZF в классе Zend_Db_Profiler_Firebug.

Итак, чтобы ответить на ваш вопрос, нет, вы не можете сделать это, не написав какой-либо пользовательский класс и его как средство записи или форматирования для объекта журнала, и вы не можете сделать это, просто используя файл application.ini.

...