我将 Sentry 添加到我的项目中,但它不会添加某些事件的当前登录用户。
我添加了一个事件订阅者,但我不确定我是否真的需要它。对于像 ArgumentCountError 这样的例外情况,一切正常。对于 NotFoundHttpException 则不然。经过一番调试后,我发现并不是每个异常都会调用 ExceptionListener->onKernelRequest 。我已经清空了sentry.yaml中的skip_capture,但这没有帮助。
我缺少什么。我的猜测是传播在某个地方停止了。但是哪里?我该如何改变这一点?
<?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
默认情况下,Sentry 不会发送用户数据,以防止 GDPR 和类似法规出现问题。
如果您想重新启用发送用户数据,请将其添加到sentry.yaml
:
sentry:
options:
send_default_pii: true
官方文档here https://docs.sentry.io/data-management/sensitive-data/.
该检查实施于\Sentry\SentryBundle\EventListener\RequestListener::onKernelRequest
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)