1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-14 15:57:24 +08:00

Add config and clock time contexts to sentry

This commit is contained in:
Dean Herbert 2022-05-11 14:03:16 +09:00
parent 843e13a471
commit b136677bb0
2 changed files with 34 additions and 0 deletions

View File

@ -2,8 +2,10 @@
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System; using System;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.Linq;
using osu.Framework.Configuration; using osu.Framework.Configuration;
using osu.Framework.Configuration.Tracking; using osu.Framework.Configuration.Tracking;
using osu.Framework.Extensions; using osu.Framework.Extensions;
@ -164,6 +166,20 @@ namespace osu.Game.Configuration
SetDefault(OsuSetting.EditorHitAnimations, false); SetDefault(OsuSetting.EditorHitAnimations, false);
} }
public IDictionary<OsuSetting, string> GetLoggableState() =>
new Dictionary<OsuSetting, string>(ConfigStore.Where(kvp => !keyContainsPrivateInformation(kvp.Key)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ToString()));
private static bool keyContainsPrivateInformation(OsuSetting argKey)
{
switch (argKey)
{
case OsuSetting.Token:
return true;
}
return false;
}
public OsuConfigManager(Storage storage) public OsuConfigManager(Storage storage)
: base(storage) : base(storage)
{ {

View File

@ -7,9 +7,12 @@ using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Net; using System.Net;
using osu.Framework.Allocation;
using osu.Framework.Bindables; using osu.Framework.Bindables;
using osu.Framework.Logging; using osu.Framework.Logging;
using osu.Game.Configuration;
using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.API.Requests.Responses;
using osu.Game.Overlays;
using Sentry; using Sentry;
using Sentry.Protocol; using Sentry.Protocol;
@ -24,8 +27,11 @@ namespace osu.Game.Utils
private readonly IDisposable? sentrySession; private readonly IDisposable? sentrySession;
private readonly OsuGame game;
public SentryLogger(OsuGame game) public SentryLogger(OsuGame game)
{ {
this.game = game;
sentrySession = SentrySdk.Init(options => sentrySession = SentrySdk.Init(options =>
{ {
// Not setting the dsn will completely disable sentry. // Not setting the dsn will completely disable sentry.
@ -92,6 +98,18 @@ namespace osu.Game.Utils
{ {
Message = entry.Message, Message = entry.Message,
Level = getSentryLevel(entry.Level), Level = getSentryLevel(entry.Level),
}, scope =>
{
scope.Contexts[@"config"] = new
{
Game = game.Dependencies.Get<OsuConfigManager>().GetLoggableState()
// TODO: add framework config here. needs some consideration on how to expose.
};
scope.Contexts[@"clocks"] = new
{
Audio = game.Dependencies.Get<MusicController>().CurrentTrack.CurrentTime,
Game = game.Clock.CurrentTime,
};
}); });
} }
else else