фатальных - Как я могу регистрировать исключения в PHP?




try catch php (5)

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


Просто написать их в файл не будет полезно, не так ли?

Но, конечно же, это - отличная вещь, гораздо лучше, чем отображение их на экране. Вы хотите показать пользователю хороший экран, в котором говорится: «Извините, мы разобрались. Инженеры были уведомлены. Вернитесь назад и повторите попытку» и абсолютно БЕСПЛАТНО ТЕХНИЧЕСКИЕ ДЕТАЛИ, потому что для этого будет риск для безопасности. Вы можете отправить электронное письмо в общий почтовый ящик и зарегистрировать исключение для файла или базы данных для последующего рассмотрения. Это будет лучшей практикой.


Я думаю, что это зависит от того, где произошла ваша ошибка. Если БД не работает, запись в БД не является хорошей идеей;)

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


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

Если вы знаете его одноразовую ошибку, то отправка по электронной почте уведомления может быть прекрасной. Тем не менее, со множеством посещений за минуту веб-сайта, никогда не отправляйте уведомления по электронной почте. Я видел, что веб-сайт сбил сотни писем в минуту, созданных, чтобы сказать, что система не может подключиться к базе данных. Тот факт, что он также имел LoadAvg> 200 из-за почтового сервера, запускаемого для каждого нового сообщения, вообще не помог. В этом случае лучшим сценарием был, во всяком случае, сторожевой таймер, проверяющий файлы и подключение к внешней службе для отправки SMS (возможно, IM) или внешний вид системы на веб-странице для сообщения об ошибке не должен быть видимым на экране - он может быть в комментарии HTML).


Я второй log4php. Обычно я настроен на отправку таких вещей, как исключения, в ERROR или CRITITCAL и их запись в syslog. Оттуда у вас может быть ваш фид syslog в Zenoss , Nagios , Splunk или что-нибудь еще, что syslog может говорить.


Мне очень нравится log4php для регистрации, хотя он еще не вышел из инкубатора. Я использую log4net практически во всем, и нашел для меня стиль вполне естественным.

Что касается системных сбоев, вы можете зарегистрировать ошибку для нескольких пунктов назначения (например, есть приложения, чей порог CRITICAL или ERROR, которые вступают в игру только тогда, когда что-то идет не так). Я не уверен, насколько безопасно существующие существующие приложения - если база данных не работает, как это приложение не удается? - но вы могли бы легко написать свой собственный appender, который будет неудачно изящно, если он не сможет зарегистрироваться.





error-logging