Я добавил Sentry в свой проект, но он не добавляет текущего зарегистрированного пользователя для некоторых событий.
Я добавил подписчика на событие, но больше не уверен, действительно ли он мне нужен.Для исключений типа ArgumentCountError все работает отлично.Для NotFoundHttpException это не так.После небольшой отладки я обнаружил, что ExceptionListener-> onKernelRequest вызывается не со всеми исключениями.Я уже опустошил skip_capture в sentry.yaml, но это не помогло.Чего мне не хватаетЯ думаю, что распространение где-то остановлено.Но где?И как я могу это изменить?
<?php
// src/EventSubscriber/SentrySubscriber
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Sentry\SentryBundle\SentrySymfonyEvents;
use Symfony\Component\HttpKernel\KernelEvents;
class SentrySubscriber implements EventSubscriberInterface {
/** @var \Raven_Client */
protected $client;
private $username;
public function __construct(\Raven_Client $client) {
$this->client = $client;
}
public static function getSubscribedEvents() {
return array(
SentrySymfonyEvents::PRE_CAPTURE => 'preCapture',
SentrySymfonyEvents::SET_USER_CONTEXT => 'setUserContext',
);
}
public function preCapture(GetResponseForExceptionEvent $event, $eventName, EventDispatcher $dispatcher) {
// username is empty, because setUserContext wasn't executed
// echo 'preCapture';var_dump($this->username);var_dump($this->client->_user);
$this->client->user_context(['username' => $this->username]);
}
public function setUserContext(\Sentry\SentryBundle\Event\SentryUserContextEvent $event) {
// echo 'setUserContext'; var_dump($event->getAuthenticationToken()->getUsername());
$this->username = $event->getAuthenticationToken()->getUsername();
}
}
Моя конфигурация:
// config/services.yaml
services:
App\EventSubscriber\SentrySubscriber:
arguments:
- '@sentry.client'
tags:
- { name: kernel.event_subscriber }
// config/packages/sentry.yaml
sentry:
dsn: '%env(SENTRY_DSN)%'
options:
curl_method: async
release: '%env(RELEASE)%'
skip_capture: # nothing else here, because everything should be captured