diff --git a/TimberWinR/Manager.cs b/TimberWinR/Manager.cs index c9f5085..f7b8901 100644 --- a/TimberWinR/Manager.cs +++ b/TimberWinR/Manager.cs @@ -1,5 +1,6 @@ using System.IO; using System.Net.Sockets; +using System.Reflection; using NLog; using NLog.Config; using NLog.Targets; @@ -10,6 +11,7 @@ using System.Text; using TimberWinR.Inputs; using TimberWinR.Outputs; using System.Threading; +using Newtonsoft.Json.Linq; namespace TimberWinR { @@ -190,9 +192,38 @@ namespace TimberWinR foreach (var output in Outputs) output.Connect(elistner); } + + var computerName = System.Environment.MachineName + "." + + Microsoft.Win32.Registry.LocalMachine.OpenSubKey( + @"SYSTEM\CurrentControlSet\services\Tcpip\Parameters") + .GetValue("Domain", "") + .ToString(); + + foreach (var output in Outputs) + { + var name = Assembly.GetExecutingAssembly().GetName(); + JObject json = new JObject( + new JProperty("TimberWinR", + new JObject( + new JProperty("version", GetAssemblyByName("TimberWinR.ServiceHost").GetName().Version.ToString()), + new JProperty("host", computerName), + new JProperty("output", output.Name), + new JProperty("initialized", DateTime.UtcNow) + ))); + output.Startup(json); + } } + } + + private Assembly GetAssemblyByName(string name) + { + return AppDomain.CurrentDomain.GetAssemblies(). + SingleOrDefault(assembly => assembly.GetName().Name == name); + } + + /// /// Creates the default . /// diff --git a/TimberWinR/Outputs/Elasticsearch.cs b/TimberWinR/Outputs/Elasticsearch.cs index 6e6d76c..eef540e 100644 --- a/TimberWinR/Outputs/Elasticsearch.cs +++ b/TimberWinR/Outputs/Elasticsearch.cs @@ -28,7 +28,7 @@ namespace TimberWinR.Outputs private long _errorCount; public ElasticsearchOutput(TimberWinR.Manager manager, Parser.ElasticsearchOutput eo, CancellationToken cancelToken) - : base(cancelToken) + : base(cancelToken, "Elasticsearch") { _sentMessages = 0; _errorCount = 0; diff --git a/TimberWinR/Outputs/OutputSender.cs b/TimberWinR/Outputs/OutputSender.cs index 37ef9d2..0e3cc2d 100644 --- a/TimberWinR/Outputs/OutputSender.cs +++ b/TimberWinR/Outputs/OutputSender.cs @@ -12,10 +12,12 @@ namespace TimberWinR.Outputs { public CancellationToken CancelToken { get; private set; } private List _inputs; - - public OutputSender(CancellationToken cancelToken) + public string Name { get; set; } + + public OutputSender(CancellationToken cancelToken, string name) { CancelToken = cancelToken; + Name = name; _inputs = new List(); } @@ -24,6 +26,11 @@ namespace TimberWinR.Outputs listener.OnMessageRecieved += MessageReceivedHandler; } + public void Startup(JObject json) + { + MessageReceivedHandler(json); + } + public abstract JObject ToJson(); protected abstract void MessageReceivedHandler(JObject jsonMessage); } diff --git a/TimberWinR/Outputs/Redis.cs b/TimberWinR/Outputs/Redis.cs index a166a9f..85a3181 100644 --- a/TimberWinR/Outputs/Redis.cs +++ b/TimberWinR/Outputs/Redis.cs @@ -90,7 +90,7 @@ namespace TimberWinR.Outputs } public RedisOutput(TimberWinR.Manager manager, Parser.RedisOutput ro, CancellationToken cancelToken) - : base(cancelToken) + : base(cancelToken, "Redis") { _redisDepth = 0; _batchCount = ro.BatchCount; diff --git a/TimberWinR/Outputs/Stdout.cs b/TimberWinR/Outputs/Stdout.cs index f437a30..c604ba2 100644 --- a/TimberWinR/Outputs/Stdout.cs +++ b/TimberWinR/Outputs/Stdout.cs @@ -17,7 +17,7 @@ namespace TimberWinR.Outputs private long _sentMessages; public StdoutOutput(TimberWinR.Manager manager, Parser.StdoutOutput eo, CancellationToken cancelToken) - : base(cancelToken) + : base(cancelToken, "Stdout") { _sentMessages = 0; _manager = manager;