Enhanced to log JSON errors to Redis/Elasticsearch

This commit is contained in:
Eric Fontana
2015-04-08 10:58:27 -04:00
parent e8a54782e4
commit 7f6e563238
6 changed files with 65 additions and 2 deletions

View File

@@ -7,7 +7,9 @@ using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using Microsoft.Win32;
using TimberWinR.Outputs;
using TimberWinR.ServiceHost;
using TimberWinR.Inputs;
@@ -26,6 +28,9 @@ namespace TimberWinR.ServiceHost
private static void Main(string[] args)
{
Arguments arguments = new Arguments();
HostFactory.Run(hostConfigurator =>

View File

@@ -15,6 +15,7 @@ using NLog;
using NLog.Config;
using NLog.Targets;
using ServiceStack.Text.Jsv;
using TimberWinR.Parser;
namespace TimberWinR.TestGenerator
@@ -54,7 +55,6 @@ namespace TimberWinR.TestGenerator
ramCounter.CategoryName = "Memory";
ramCounter.CounterName = "% Committed Bytes In Use";
Options = new CommandLineOptions();

View File

@@ -113,6 +113,10 @@ namespace TimberWinR.Inputs
}
catch (Exception ex)
{
var jex1 = LogErrors.LogException("Bad Json", ex);
if (jex1 != null)
ProcessJson(jex1);
LogManager.GetCurrentClassLogger().Warn(ex);
}

View File

@@ -96,9 +96,14 @@ namespace TimberWinR.Inputs
break;
}
catch (Exception ex)
{
{
var jex1 = LogErrors.LogException(string.Format("Invalid JSON: {0}", lastMessage), ex);
if (jex1 != null)
ProcessJson(jex1);
LogManager.GetCurrentClassLogger().Warn("Bad JSON: {0}", lastMessage);
LogManager.GetCurrentClassLogger().Warn(ex);
Interlocked.Increment(ref _parsedErrors);
}
}

48
TimberWinR/LogErrors.cs Normal file
View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
using TimberWinR.Parser;
namespace TimberWinR
{
public class LogErrors
{
public static JObject LogException(Exception ex)
{
return LogException("Exception", ex);
}
public static JObject LogException(string errorMessage, Exception ex)
{
JObject result = new JObject();
result["type"] = "TimberWinR-Error";
result["ErrorMessage"] = errorMessage;
try
{
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Ignore
};
var exJson = JObject.Parse(JsonConvert.SerializeObject(ex));
result.Merge(exJson, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Replace
});
return result;
}
catch (Exception ex1)
{
result["ErrorMessage"] = ex1.ToString();
return result;
}
}
}
}

View File

@@ -111,6 +111,7 @@
<Compile Include="Inputs\TcpInputListener.cs" />
<Compile Include="Inputs\LogsListener.cs" />
<Compile Include="Inputs\WindowsEvtInputListener.cs" />
<Compile Include="LogErrors.cs" />
<Compile Include="Manager.cs" />
<Compile Include="Outputs\Elasticsearch.cs" />
<Compile Include="Outputs\OutputSender.cs" />