diff --git a/TimberWinR.ServiceHost/Program.cs b/TimberWinR.ServiceHost/Program.cs index 73d2b44..94ec34b 100644 --- a/TimberWinR.ServiceHost/Program.cs +++ b/TimberWinR.ServiceHost/Program.cs @@ -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 => diff --git a/TimberWinR.TestGenerator/Program.cs b/TimberWinR.TestGenerator/Program.cs index 18cc313..5711f74 100644 --- a/TimberWinR.TestGenerator/Program.cs +++ b/TimberWinR.TestGenerator/Program.cs @@ -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(); diff --git a/TimberWinR/Inputs/TcpInputListener.cs b/TimberWinR/Inputs/TcpInputListener.cs index 64db158..ae7a37e 100644 --- a/TimberWinR/Inputs/TcpInputListener.cs +++ b/TimberWinR/Inputs/TcpInputListener.cs @@ -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); } diff --git a/TimberWinR/Inputs/UdpInputListener.cs b/TimberWinR/Inputs/UdpInputListener.cs index 020cc23..d7f0cd7 100644 --- a/TimberWinR/Inputs/UdpInputListener.cs +++ b/TimberWinR/Inputs/UdpInputListener.cs @@ -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); } } diff --git a/TimberWinR/LogErrors.cs b/TimberWinR/LogErrors.cs new file mode 100644 index 0000000..698f09a --- /dev/null +++ b/TimberWinR/LogErrors.cs @@ -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; + } + } + } +} diff --git a/TimberWinR/TimberWinR.csproj b/TimberWinR/TimberWinR.csproj index 4ad3c76..cd0fb73 100644 --- a/TimberWinR/TimberWinR.csproj +++ b/TimberWinR/TimberWinR.csproj @@ -111,6 +111,7 @@ +