Различают новые и существующие исключения - PullRequest
0 голосов
/ 29 января 2012

Я создаю приложение PHP и хочу показать, сколько раз произошла ошибка.Проблема, которую я пытаюсь выяснить, состоит в том, если ошибка уже была сообщена или если она новая, используя следующие значения:

  1. Сообщение (т. Е. Попытка деления на ноль.)
  2. Трассировка стека (то есть: в componentNETapp.Form1.btnTrackExceptionsUn_Click (отправитель объекта, EventArgs e) ...)
  3. Источник (то есть: componentNETapp)
  4. Целевой сайт (то есть: Void btnTrackExceptionsUn_Click (System.Object, System.EventArgs))

Спасибо

1 Ответ

3 голосов
/ 29 января 2012

Прежде всего ошибки или исключения? PHP отличается между ошибками и исключениями. Как правило, может представлять интерес раздел Обработка ошибок и ведение журнала & shy; Docs данного руководства.

Для ошибок:

error_get_last & shy; Документы вернет последнюю ошибку со следующей информацией: Тип (целое число), Сообщение (строка), Файл (строка) ) и строка (целое число). Я бы сказал, это говорит само за себя. Возможно, вам также захочется взглянуть на set_error_handler & shy; Docs , которая, наряду с этими четырьмя битами информации, также предложит вам ошибку контекст вы можете использовать.

Если вам нужна дополнительная информация об ошибке, в PHP есть также обратная трассировка debug_backtrace & shy; Docs , которая может добавить еще больше контекста.

Для исключений:

Каждый Exception & shy; Документы имеет похожие члены: сообщение (строка), код (целое число), файл (строка) и строка (целое число) ). Он также имеет трассировку, которая содержит больше информации и может быть использована в качестве контекста. Также возможно установить предыдущее исключение для вложенных исключений. Как и обработчик ошибок, можно также использовать обработчик исключений: set_exception_handler & shy; Docs .


Обладая предоставленной информацией, вы сможете обрабатывать и регистрировать все ошибки / исключения таким образом, чтобы впоследствии их можно было проанализировать. Кроме того, также возможно использовать протоколирование ошибок PHP и сохранять эти ошибки в базе данных. См. Вывод всех ошибок PHP в базу данных, а не error_log для простого примера. Я бы сказал, что ключевым моментом является то, что вы храните информацию об ошибках в более или менее нормализованной форме, чтобы позже вы могли определить критерии их подсчета / группировки.

Если вам нужна дополнительная инфраструктура, взгляните на проект apache logging services , который предлагает некоторые инструменты (например, viewer ) и для него существует PHP-логгер, тоже ( log4php ).

Но это только пример, существуют и другие инструменты, некоторые из них используют бэкэнд MySQL, и вы можете отслеживать не только PHP, но и другие ошибки.

...