Smaller sentry payload, send machine name as user name
This commit is contained in:
parent
cd7e208efa
commit
0bdc137093
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
using SharpRaven.Data;
|
||||||
|
|
||||||
|
namespace NzbDrone.Common.Instrumentation.Sentry
|
||||||
|
{
|
||||||
|
public class MachineNameUserFactory : ISentryUserFactory
|
||||||
|
{
|
||||||
|
public SentryUser Create()
|
||||||
|
{
|
||||||
|
return new SentryUser(Environment.MachineName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,23 +11,11 @@ using SharpRaven.Data;
|
||||||
|
|
||||||
namespace NzbDrone.Common.Instrumentation.Sentry
|
namespace NzbDrone.Common.Instrumentation.Sentry
|
||||||
{
|
{
|
||||||
public class SentryUserFactory : ISentryUserFactory
|
|
||||||
{
|
|
||||||
public SentryUser Create()
|
|
||||||
{
|
|
||||||
return new SentryUser((string)null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[Target("Sentry")]
|
[Target("Sentry")]
|
||||||
public class SentryTarget : TargetWithLayout
|
public class SentryTarget : TargetWithLayout
|
||||||
{
|
{
|
||||||
private readonly RavenClient _client;
|
private readonly RavenClient _client;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Map of NLog log levels to Raven/Sentry log levels
|
|
||||||
/// </summary>
|
|
||||||
private static readonly IDictionary<LogLevel, ErrorLevel> LoggingLevelMap = new Dictionary<LogLevel, ErrorLevel>
|
private static readonly IDictionary<LogLevel, ErrorLevel> LoggingLevelMap = new Dictionary<LogLevel, ErrorLevel>
|
||||||
{
|
{
|
||||||
{LogLevel.Debug, ErrorLevel.Debug},
|
{LogLevel.Debug, ErrorLevel.Debug},
|
||||||
|
@ -42,7 +30,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||||
|
|
||||||
public SentryTarget(string dsn)
|
public SentryTarget(string dsn)
|
||||||
{
|
{
|
||||||
_client = new RavenClient(new Dsn(dsn), new JsonPacketFactory(), new SentryRequestFactory(), new SentryUserFactory())
|
_client = new RavenClient(new Dsn(dsn), new SonarrJsonPacketFactory(), new SentryRequestFactory(), new MachineNameUserFactory())
|
||||||
{
|
{
|
||||||
Compression = true,
|
Compression = true,
|
||||||
Environment = RuntimeInfo.IsProduction ? "production" : "development",
|
Environment = RuntimeInfo.IsProduction ? "production" : "development",
|
||||||
|
@ -103,7 +91,9 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||||
var extras = logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());
|
var extras = logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());
|
||||||
_client.Logger = logEvent.LoggerName;
|
_client.Logger = logEvent.LoggerName;
|
||||||
|
|
||||||
var sentryMessage = new SentryMessage(Layout.Render(logEvent));
|
|
||||||
|
var sentryMessage = new SentryMessage(logEvent.Message, logEvent.Parameters);
|
||||||
|
|
||||||
var sentryEvent = new SentryEvent(logEvent.Exception)
|
var sentryEvent = new SentryEvent(logEvent.Exception)
|
||||||
{
|
{
|
||||||
Level = LoggingLevelMap[logEvent.Level],
|
Level = LoggingLevelMap[logEvent.Level],
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using SharpRaven.Data;
|
||||||
|
|
||||||
|
namespace NzbDrone.Common.Instrumentation.Sentry
|
||||||
|
{
|
||||||
|
public class SonarrJsonPacketFactory : IJsonPacketFactory
|
||||||
|
{
|
||||||
|
private static string ShortenPath(string path)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(path))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var index = path.IndexOf("\\src\\", StringComparison.Ordinal);
|
||||||
|
|
||||||
|
if (index <= 0)
|
||||||
|
{
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
return path.Substring(index + "\\src".Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonPacket Create(string project, SentryEvent @event)
|
||||||
|
{
|
||||||
|
var packet = new SonarrSentryPacket(project, @event);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
foreach (var exception in packet.Exceptions)
|
||||||
|
{
|
||||||
|
foreach (var frame in exception.Stacktrace.Frames)
|
||||||
|
{
|
||||||
|
frame.Filename = ShortenPath(frame.Filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Obsolete]
|
||||||
|
public JsonPacket Create(string project, SentryMessage message, ErrorLevel level = ErrorLevel.Info, IDictionary<string, string> tags = null,
|
||||||
|
string[] fingerprint = null, object extra = null)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Obsolete]
|
||||||
|
public JsonPacket Create(string project, Exception exception, SentryMessage message = null, ErrorLevel level = ErrorLevel.Error,
|
||||||
|
IDictionary<string, string> tags = null, string[] fingerprint = null, object extra = null)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using SharpRaven.Data;
|
||||||
|
|
||||||
|
namespace NzbDrone.Common.Instrumentation.Sentry
|
||||||
|
{
|
||||||
|
public class SonarrSentryPacket : JsonPacket
|
||||||
|
{
|
||||||
|
private readonly JsonSerializerSettings _setting;
|
||||||
|
|
||||||
|
public SonarrSentryPacket(string project, SentryEvent @event) :
|
||||||
|
base(project, @event)
|
||||||
|
{
|
||||||
|
_setting = new JsonSerializerSettings
|
||||||
|
{
|
||||||
|
DefaultValueHandling = DefaultValueHandling.Ignore
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString(Formatting formatting)
|
||||||
|
{
|
||||||
|
return JsonConvert.SerializeObject(this, formatting, _setting);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return ToString(Formatting.None);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -184,6 +184,9 @@
|
||||||
<Compile Include="Instrumentation\NzbDroneLogger.cs" />
|
<Compile Include="Instrumentation\NzbDroneLogger.cs" />
|
||||||
<Compile Include="Instrumentation\Sentry\SentryDebounce.cs" />
|
<Compile Include="Instrumentation\Sentry\SentryDebounce.cs" />
|
||||||
<Compile Include="Instrumentation\Sentry\SentryTarget.cs" />
|
<Compile Include="Instrumentation\Sentry\SentryTarget.cs" />
|
||||||
|
<Compile Include="Instrumentation\Sentry\MachineNameUserFactory.cs" />
|
||||||
|
<Compile Include="Instrumentation\Sentry\SonarrJsonPacketFactory.cs" />
|
||||||
|
<Compile Include="Instrumentation\Sentry\SonarrSentryPacket.cs" />
|
||||||
<Compile Include="Instrumentation\VersionLayoutRenderer.cs" />
|
<Compile Include="Instrumentation\VersionLayoutRenderer.cs" />
|
||||||
<Compile Include="Extensions\LevenstheinExtensions.cs" />
|
<Compile Include="Extensions\LevenstheinExtensions.cs" />
|
||||||
<Compile Include="Messaging\IEvent.cs" />
|
<Compile Include="Messaging\IEvent.cs" />
|
||||||
|
|
Loading…
Reference in New Issue