编程语言
首页 > 编程语言> > 配置使用PHP发送到Sentry的内容

配置使用PHP发送到Sentry的内容

作者:互联网

我尝试在我的非framework-php项目中设置Sentry.它就像一个魅力,但有一件事困扰着我:

代码非常不严格且容易出现问题.设想为每个用户点击发送有时50个通知哨兵似乎是一个很大的开销. (不,不幸的是,修复所有这些事情不在预算中!)

所以我的问题是:有没有办法告诉哨兵发送级别警告及以上的错误?

这是我的代码:

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();

解决方法:

您应该查看您正在设置的处理程序.例如,你可以这样做:

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

这只会发送某些错误.我认为ExceptionHandler是“安全的”添加,但要注意shutdownhandler.

更多信息:shutdownhandler有点’贪心’.
它调用handleFatalError函数,但这确实处理了更多然后只是致命错误.对于我的系统(但我有一个更复杂的日志记录系统)这已经足够了,但是如果因为不存在shutdown函数而开始丢失错误,则应该为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

标签:sentry,error-reporting,php
来源: https://codeday.me/bug/20190829/1759687.html