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;