Что лучший способ состоит в том, чтобы зарегистрировать ошибки в Платформе Зенда 1?

Мы создали приложение в Платформе Зенда (v1) и не работали много в установке сообщения об ошибке и входе. Есть ли какой-либо способ, которым мы могли получить некоторый уровень или сообщение об ошибке без слишком большого изменения в коде? Существует ли доступный плагин ErrorHandler?

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

Я также хочу смочь зарегистрировать ошибки в своих контроллерах. Будет использование ошибочного контроллера здесь, помочь мне определить и зарегистрировать ошибки в своих контроллерах? Как лучше всего сделать это с минимальными изменениями?

16
задан Simon East 25 September 2017 в 23:39
поделиться

2 ответа

Я бы использовал Zend_Log и использовал следующую стратегию.

Если вы используете Zend_Application в своем приложении, есть ресурс для ведения журнала. Вы можете прочитать больше о ресурсе здесь

Я бы посоветовал выбрать между записью в поток файлов db или log. Запишите свой журнал в базу данных, если вы планируете иметь какой-то веб-интерфейс для него, если не простой файл, то подойдет.

Вы можете настроить ведение журнала в файл с помощью этого простого примера

  resources.log.stream.writerName = "Stream"
  resources.log.stream.writerParams.stream = APPLICATION_PATH "/../data/logs/application.log"
  resources.log.stream.writerParams.mode = "a"
  resources.log.stream.filterName = "Priority"
  resources.log.stream.filterParams.priority = 4

Кроме того, я бы посоветовал отправлять сообщения о критических ошибках на адрес электронной почты, который регулярно проверяется вашей командой разработчиков. Компания, в которой я работаю, отправляет их (скрыто) и пересылает всем разработчикам с производственных сайтов.

Насколько я понимаю, вы не можете настроить средство записи почты через фабрику, поэтому ресурс не принесет вам никакой пользы, но вы, вероятно, можете настроить его в ErrorController или Bootstrap.

  $mail = new Zend_Mail();

  $mail->setFrom('errors@example.org')
       ->addTo('project_developers@example.org');
  $writer = new Zend_Log_Writer_Mail($mail);
  // Set subject text for use; summary of number of errors is appended to the
  // subject line before sending the message.
  $writer->setSubjectPrependText('Errors with script foo.php');

  // Only email warning level entries and higher.
  $writer->addFilter(Zend_Log::WARN);
  $log = new Zend_Log();
  $log->addWriter($writer);

  // Something bad happened!

  $log->error('unable to connect to database');

  // On writer shutdown, Zend_Mail::send() is triggered to send an email with
  // all log entries at or above the Zend_Log filter level.

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

32
ответ дан 30 November 2019 в 17:15
поделиться

Вы можете использовать Zend_Controller_Plugin_ErrorHandler . Как вы можете видеть на странице документации, есть пример, который проверяет отсутствие контроллера / действия и показывает, как установить соответствующие заголовки.

Затем вы можете использовать Zend_Log для записи сообщений об ошибках на диск / db / mail.

1
ответ дан 30 November 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: