Lidarr/NzbDrone.Common/Instrumentation/LogglyTarget.cs

63 lines
1.9 KiB
C#
Raw Normal View History

2013-05-24 03:23:59 +00:00
using System.Collections.Generic;
using NLog;
using NLog.Layouts;
using NLog.Targets;
using NzbDrone.Common.EnvironmentInfo;
2013-05-24 03:23:59 +00:00
using NzbDrone.Common.Serializer;
using Logger = Loggly.Logger;
namespace NzbDrone.Common.Instrumentation
{
public class LogglyTarget : TargetWithLayout
{
private Logger _logger;
2013-08-31 01:42:30 +00:00
public LogglyTarget()
2013-05-24 03:23:59 +00:00
{
Layout = new SimpleLayout("${callsite:className=false:fileName=false:includeSourcePath=false:methodName=true}");
2013-08-31 01:42:30 +00:00
2013-05-24 03:23:59 +00:00
}
protected override void InitializeTarget()
{
string apiKey = string.Empty;
if (RuntimeInfo.IsProduction)
2013-05-24 03:23:59 +00:00
{
apiKey = "4c4ecb69-d1b9-4e2a-b54b-b0c4cc143a95";
}
else
{
apiKey = "d344a321-b107-45c4-a548-77138f446510";
}
_logger = new Logger(apiKey);
}
2013-07-24 05:35:32 +00:00
protected override void Write(LogEventInfo logEvent)
2013-05-24 03:23:59 +00:00
{
var dictionary = new Dictionary<string, object>();
if (logEvent.Exception != null)
{
dictionary.Add("ex", logEvent.Exception.ToString());
dictionary.Add("extyp", logEvent.Exception.GetType().Name);
dictionary.Add("hash", logEvent.GetHash());
foreach (var key in logEvent.Exception.Data.Keys)
{
dictionary.Add(key.ToString(), logEvent.Exception.Data[key]);
}
2013-05-24 03:23:59 +00:00
}
dictionary.Add("logger", logEvent.LoggerName);
dictionary.Add("method", Layout.Render(logEvent));
dictionary.Add("level", logEvent.Level.Name);
dictionary.Add("message", logEvent.GetFormattedMessage());
dictionary.Add("ver", BuildInfo.Version.ToString());
2013-05-24 03:23:59 +00:00
_logger.Log(dictionary.ToJson());
2013-05-24 03:23:59 +00:00
}
}
}