Ответ 1
Я бы использовал Zend_Log и использовал следующую стратегию.
Если вы используете Zend_Application в своем приложении, есть ресурс для ведения журнала. Подробнее о ресурсе здесь
Моим советом было бы выбрать между записью в поток db или файла журнала. Запишите свой журнал в db, если вы планируете использовать для него какой-то веб-интерфейс, если не плоский файл будет работать нормально.
Вы можете настроить ведение журнала в файл с помощью этого простого примера
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
Кроме того, я бы предложил отправить критические ошибки на учетную запись электронной почты, которая регулярно проверяется вашей командой разработчиков. Компания, с которой я работаю, отправляет их по адресу [email protected] и отправляет всех разработчиков с производственных сайтов.
Из того, что я понимаю, вы не можете настроить почтовый писатель с помощью factory, поэтому ресурс не принесет вам никакой пользы, но вы, вероятно, можете настроить его в своем ErrorController или Bootstrap.
$mail = new Zend_Mail();
$mail->setFrom('[email protected]')
->addTo('[email protected]');
$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.
Вам нужно будет сделать небольшую работу над приведенным выше примером, но оптимальным решением будет захват ресурса журнала в вашем файле начальной загрузки и добавление к нему автора электронной почты вместо создания второго экземпляра журнала.