Автоматический сбор ошибок из кода сервера PHP / apache - PullRequest
1 голос
/ 29 января 2009

Больно отлавливать вещи из apache error_log. У кого-нибудь есть указатели на какой-то лучший механизм сбора ошибок. Примерно то, что описано в " Использование FogBUGZ для получения отчетов о сбоях от пользователей - автоматически! ", но для веб-приложения PHP / apache

Более конкретно, какой-то механизм для привязки ошибок, генерируемых PHP, к некоторому программному обеспечению для отслеживания ошибок. Возможно указатели на некоторую библиотеку / код, который фиксирует ошибки / предупреждения и собирает данные, которые могут быть введены в программное обеспечение отслеживания ошибок. Со следующими бонусными функциями:

  • идентифицирует повторяющиеся ошибки.
  • если ошибка приводит к более чем одному сообщению об ошибке, оно должно быть зафиксировано как одна ошибка

Ответы [ 3 ]

1 голос
/ 06 февраля 2009

Вы можете указать свой собственный обработчик ошибок PHP. Вот простой пример:

function log_error_handler($errno, $str, $file, $line)
{
    switch($errno) {
        case E_USER_ERROR:
            add_log("PHP Error", "Error $errno on line $line in $file: $str", "fatal");
            exit(1);
            break;

        case E_USER_WARNING:
            add_log("PHP Warning", "Warning $errno on line $line in $file: $str", "warning");
            break;

        case E_USER_NOTICE:
            add_log("PHP Notice", "Notice $errno on line $line in $file: $str", "note");
            break;

        default:
//uncomment this next line to catch
//            add_log("PHP", "Unknown error $errno on line $line in $file: $str", "note");
            break;
    }
}
function add_log($code, $message, $type = 'message', $program = null ){
     //do something like email the admin or enter in the data in to the bug tracking software db
}

// ### function to log php errors ####
set_error_handler("log_error_handler");
0 голосов
/ 11 февраля 2009

Игнорировать время ошибки и получить хэш md5 сообщения об ошибке. Проверьте, есть ли этот хэш MD5 в вашей базе данных ошибок. Если нет, добавьте это. Если да, возможно, вы хотите добавить дату, когда это произошло в этот раз.

  • если ошибка приводит к более чем одному сообщению об ошибке, оно должно быть зафиксировано как одна ошибка

Это сложно, если вы не очень хорошо используете функцию error_log(). Вы можете просто договориться о соглашении, например:

error_log('ename:'.$error_name.' emessage:'.$e->toString());

Таким образом, вы можете анализировать и группировать любые ошибки с одинаковыми ename и MD5 emessage.

0 голосов
/ 03 февраля 2009

Мы используем Zend Platform на наших серверах. Это не бесплатно, но работает очень хорошо и выполняет большую часть того, что вы просите.

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

Самое приятное заключается в следующем: поскольку все событие записывается, вы можете отладить событие одним щелчком мыши. Состояние приложения (код, сеанс, переменные, файлы cookie и даже загруженные файлы) отправляется в Eclipse и приостанавливается. Затем вы можете пройти по коду, чтобы увидеть точное состояние приложения, когда произошла ошибка. Очень полезно для анализа первопричин. При желании вы можете воспроизвести ошибку на сервере разработки, чтобы не мешать работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...