Не удается получить user_context для передачи в Sentry с Laravel 5.1

Моя цель — передать пользовательский контекст, такой как электронная почта или идентификатор, в Sentry, чтобы я мог видеть, какие пользователи что-то сломали.

Я настроил часть Global Middleware для добавления пользовательского контекста в мои ошибки Sentry. Вот класс:

        class AddUserToSentry
{
/**
* Handle an incoming request.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Closure  $next
* @return mixed
*/
public function handle($request, Closure $next)
{

if(Auth::user())
{
//dd(Auth::user()->email);
app('sentry')->user_context(array(
'email' => Auth::user()->email
));
}
return $next($request);
}
}

В моем Handler.php у меня есть:

 /**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param  \Exception  $e
* @return void
*/
public function report(Exception $e)
{

if ($this->shouldReport($e)) {
app('sentry')->captureException($e);

}
parent::report($e);
}

Чего мне не хватает, чтобы сделать эту работу? Все, что я получаю для пользовательского контекста, это IP-адрес, который не очень полезен в моем случае.

Большое спасибо,

мистифицировать

0

Решение

Вот полный пример, источник это из официальной часовой документации. Чтобы избежать необходимости добавлять use Auth; Вы можете просто использовать auth() вспомогательная функция.

namespace App\Http\Middleware;

use Closure;

class SentryContext
{
/**
* Handle an incoming request.
*
* @param  \Illuminate\Http\Request $request
* @param  \Closure                 $next
*
* @return mixed
*/
public function handle($request, Closure $next)
{
if (app()->bound('sentry')) {
/** @var \Raven_Client $sentry */
$sentry = app('sentry');

// Add user context
if (auth()->check()) {
$sentry->user_context(['id' => auth()->user()->id, 'email' => auth()->user()->email]);
}

// Add tags context
// $sentry->tags_context(['foo' => 'bar']);
}

return $next($request);
}
}
1

Другие решения

Вам необходимо предоставить доступ к Auth Facade Laravel в вашем контроллере следующим образом:

Use Auth;

0

По вопросам рекламы [email protected]