我无法将哨兵添加到php slim

时间:2018-10-27 19:12:35

标签: php error-handling sentry slim-3

我需要向我的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;
};

但是我在哨兵控制面板中没有得到所有错误。 例如访问未定义的数组索引。 谢谢。

2 个答案:

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

不确定这是否是“推荐”方式,但是可以。