我的目标是将电子邮件或 ID 等用户上下文传递到 Sentry,这样我就可以看到哪些用户破坏了某些内容。
我已经配置了一个全局中间件来将用户上下文添加到我的 Sentry 错误中。这是类(class):
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 地址,这对我的情况没有多大帮助。
非常感谢,
乔什
最佳答案
这是一个完整的示例,source来自官方 Sentry 文档。为了避免添加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);
}
}
关于php - 无法使用 Laravel 5.1 将 user_context 传递到 Sentry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384898/