Send "initialized" message on startup.

This commit is contained in:
Eric Fontana
2014-09-29 08:25:42 -04:00
parent 0f660fb937
commit 8e62188566
5 changed files with 43 additions and 5 deletions

View File

@@ -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);
}
/// <summary>
/// Creates the default <see cref="FileTarget"/>.
/// </summary>

View File

@@ -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;

View File

@@ -12,10 +12,12 @@ namespace TimberWinR.Outputs
{
public CancellationToken CancelToken { get; private set; }
private List<InputListener> _inputs;
public OutputSender(CancellationToken cancelToken)
public string Name { get; set; }
public OutputSender(CancellationToken cancelToken, string name)
{
CancelToken = cancelToken;
Name = name;
_inputs = new List<InputListener>();
}
@@ -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);
}

View File

@@ -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;

View File

@@ -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;