FirePHP не показывает дополнительные функции при использовании с Zend_Log_Writer_Firebug

Я разрабатывал 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 обрабатывает исключение и показывает трассировку стека и параметры запроса:

Параметры запроса

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

Firebug Success

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

Подробное окно Firebug

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам