Я не могу добавить часового в php slim - PullRequest
0 голосов
/ 27 октября 2018

Мне нужно добавить обработчик ошибок php sentry в мой проект slim 3. как я могу это сделать? куда следует поместить код интеграции часового? то, что я делаю сейчас:

// 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 голосов
/ 03 июня 2019

Я использую пользовательский обработчик ошибок для перехвата исключений.Таким образом, я могу использовать стандартный обработчик ошибок и отчеты об ошибках 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();

Не уверен, что это «рекомендуемый» способ,но это работает.

0 голосов
/ 05 января 2019

Я думаю, что лучший способ - это просто сделать следующее (я не проверял это или когда-либо использовал Slim, но, глядя на документы Slim, это a способ сделать это):

В вашем index.php (который должен быть точкой входа в приложение) сразу после require '../../vendor/autoload.php'; (автозагрузка композитора).

Добавьте код инициализации Raven:

$sentry = new Raven_Client('http://key@ip:9000/2');
$sentry->install();

Это настроит SDK на обработку (и отправку) всех ошибок, больше не требуется обработчик Monolog.

Если вы хотите интегрировать его в класс ErrorHandler, который вы создали, глядя на , этот скелетный проект может дать вам несколько идей.

...