Add local user tracking to sentry reporting

This commit is contained in:
Dean Herbert 2022-05-10 14:12:31 +09:00
parent 09c21cde8c
commit 64cc6ebddb
2 changed files with 18 additions and 1 deletions

View File

@ -125,7 +125,7 @@ namespace osu.Game
protected MusicController MusicController { get; private set; }
protected IAPIProvider API { get; set; }
protected internal IAPIProvider API { get; protected set; }
protected Storage Storage { get; set; }

View File

@ -4,7 +4,10 @@
using System;
using System.IO;
using System.Net;
using JetBrains.Annotations;
using osu.Framework.Bindables;
using osu.Framework.Logging;
using osu.Game.Online.API.Requests.Responses;
using Sentry;
namespace osu.Game.Utils
@ -18,6 +21,9 @@ namespace osu.Game.Utils
private Scope sentryScope;
private Exception lastException;
[UsedImplicitly]
private readonly IBindable<APIUser> localUser;
public SentryLogger(OsuGame game)
{
if (!game.IsDeployedBuild) return;
@ -34,6 +40,16 @@ namespace osu.Game.Utils
sentryScope = new Scope(options);
Logger.NewEntry += processLogEntry;
localUser = game.API.LocalUser.GetBoundCopy();
localUser.BindValueChanged(user =>
{
sentryScope.User = new User
{
Username = user.NewValue.Username,
Id = user.NewValue.Id.ToString(),
};
});
}
private void processLogEntry(LogEntry entry)
@ -50,6 +66,7 @@ namespace osu.Game.Utils
if (lastException != null && lastException.Message == exception.Message && exception.StackTrace.StartsWith(lastException.StackTrace, StringComparison.Ordinal)) return;
lastException = exception;
sentry.CaptureEvent(new SentryEvent(exception)
{
Message = entry.Message,