отчеты об ошибках — Сконфигурируйте то, что отправляется в Sentry с переполнением стека

Я пытаюсь настроить Sentry в своем проекте non-framework-php. Это работает как шарм, но меня беспокоит одна вещь:

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

Итак, мой вопрос: есть ли способ сообщить часовому просто отправить ошибки с уровнем WARNING и выше?

Это мой код:

error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
require_once 'Raven/Autoloader.php';
Raven_Autoloader::register();

$client = new Raven_Client('myurl');
$error_handler = new Raven_ErrorHandler($client);
$error_handler->registerExceptionHandler();
$error_handler->registerErrorHandler();
$error_handler->registerShutdownFunction();

3

Решение

Вы должны посмотреть на обработчики, которые вы устанавливаете. Например, вы можете сделать это:

$error_handler = new \Raven_ErrorHandler($client);
$error_handler->registerErrorHandler(true, E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_USER_DEPRECATED);

Это только отправило бы определенные ошибки. Я думаю, что ExceptionHandler «безопасен» для добавления, но будьте осторожны с обработчиком завершения работы.

Немного больше информации: shutdownhandler немного «жадный».
Это вызывает handleFatalError функция, но это обрабатывает БОЛЬШЕ, чем просто фатальные ошибки. Для моей системы (но у меня более сложная система ведения журнала) этого достаточно, но если вы начинаете пропускать ошибки из-за отсутствия функции завершения работы, вы должны создать дочерний класс для ErrorHandler файл и переопределить это handleFatalError() функция.

Если вы посмотрите на код, вы увидите, что он вызывает частный getErrorTypesToProcess, который возвращает дополнительные типы, которые вы можете дать ему, в сочетании с этим списком:

private $validErrorTypes = array(
E_ERROR,
E_WARNING,
E_PARSE,
E_NOTICE,
E_CORE_ERROR,
E_CORE_WARNING,
E_COMPILE_ERROR,
E_COMPILE_WARNING,
E_USER_ERROR,
E_USER_WARNING,
E_USER_NOTICE,
E_STRICT,
E_RECOVERABLE_ERROR,
E_DEPRECATED,
E_USER_DEPRECATED,
);

И это немного большое для меня 🙂
Но, как уже говорилось, вы можете быть, как я, и просто пропустить функцию выключения работает нормально?

Для справки смотрите эти темы:

https://github.com/getsentry/raven-php/issues/168
https://github.com/getsentry/raven-php/pull/181
https://github.com/getsentry/raven-php/issues/266

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]