我需要向我的slim 3项目添加php sentry错误处理程序。 我该怎么办? 岗哨集成代码应该放在哪里? 我现在正在做的是:
// monolog
$container['logger'] = function ($c) {
$settings = $c->get('settings')['logger'];
$logger = new Monolog\Logger($settings['name']);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level']));
$client = new Raven_Client(
'http://key@ip:9000/2'
);
$handler = new Monolog\Handler\RavenHandler($client);
$handler->setFormatter(new Monolog\Formatter\LineFormatter("%message% %context% %extra%\n"));
$logger->pushHandler($handler);
return $logger;
};
但是我在哨兵控制面板中没有得到所有错误。 例如访问未定义的数组索引。 谢谢。
答案 0 :(得分:0)
我认为最好的方法就是执行以下操作(我没有测试过此功能,或者从未使用过Slim,但查看Slim文档,这是一种的方式):
在index.php
(作曲家自动加载)之后的require '../../vendor/autoload.php';
(应该是应用程序入口点)中。
添加Raven初始化代码:
$sentry = new Raven_Client('http://key@ip:9000/2');
$sentry->install();
这将配置SDK来处理(并发送)所有错误,而不再需要Monolog处理程序。
如果您想将其集成到您创建的this skeleton project类的ErrorHandler
类中,可能会给您一些想法。
答案 1 :(得分:0)
我正在使用自定义错误处理程序来捕获异常。这样,我可以同时使用默认的苗条错误处理程序和Sentry错误报告。
这是我的代码:
// initalize sentry
Sentry\init(['dsn' => 'your_dsn' ]);
// Run app
$app = (new App())->get();
// register custom error handler
$c = $app->getContainer();
$c['errorHandler'] = function ($c) {
return function ($request, $response, $exception) use ($c) {
// send error to sentry
Sentry\captureException($exception);
// invoke default error handler
$handler = new Slim\Handlers\Error();
return $handler->__invoke($request, $response, $exception);
};
};
$app->run();
不确定这是否是“推荐”方式,但是可以。