Added new syntax for handling multiple filters of the same type.

This commit is contained in:
Eric Fontana
2014-12-18 07:35:23 -05:00
parent f4f8f0b50b
commit 8ba2db7cf4
2 changed files with 36 additions and 4 deletions

View File

@@ -144,7 +144,7 @@ namespace TimberWinR.Inputs
var qcount = string.Format("SELECT max(Index) as MaxRecordNumber FROM {0}", logName);
var rcount = oLogQuery.Execute(qcount, iFmt);
var qr = rcount.getRecord();
var lrn = (Int64) qr.getValueEx("MaxRecordNumber");
var lrn = (Int64) qr.getValueEx("MaxRecordNumber");
if (logHasRolled)
{
LogManager.GetCurrentClassLogger().Info("Log {0} has rolled", logName);
@@ -217,7 +217,14 @@ namespace TimberWinR.Inputs
GC.Collect();
}
}
catch(FileNotFoundException fnfex)
{
LogManager.GetCurrentClassLogger().Warn(fnfex.Message);
}
catch(OperationCanceledException oce)
{
break;
}
catch (Exception ex)
{
LogManager.GetCurrentClassLogger().Error(ex);

View File

@@ -817,7 +817,6 @@ namespace TimberWinR.Parser
if (AddField != null && AddField.Length % 2 != 0)
throw new JsonAddFieldException();
}
}
@@ -835,9 +834,24 @@ namespace TimberWinR.Parser
[JsonProperty("json")]
public Json Json { get; set; }
[JsonProperty("geoip")]
public GeoIP GeoIP { get; set; }
[JsonProperty("grokFilters")]
public Grok[] Groks { get; set; }
[JsonProperty("mutateFilters")]
public Mutate[] Mutates { get; set; }
[JsonProperty("dateFilters")]
public DateFilter[] Dates { get; set; }
[JsonProperty("jsonFilters")]
public Json[] Jsons { get; set; }
[JsonProperty("geoipFilters")]
public GeoIP[] GeoIPs { get; set; }
}
public class TimberWinR
@@ -854,8 +868,14 @@ namespace TimberWinR.Parser
get
{
var list = new List<LogstashFilter>();
foreach (var filter in Filters)
{
//if (filter is Json[])
//{
// Json[] ja = filter as Json[];
// list.AddRange(ja);
//}
foreach (var prop in filter.GetType().GetProperties())
{
object typedFilter = filter.GetType().GetProperty(prop.Name).GetValue(filter, null);
@@ -863,6 +883,11 @@ namespace TimberWinR.Parser
{
list.Add(typedFilter as LogstashFilter);
}
else if (typedFilter != null && typedFilter.GetType().IsArray && typeof(LogstashFilter).IsAssignableFrom(typedFilter.GetType().GetElementType()))
{
IEnumerable<LogstashFilter> lf = typedFilter as IEnumerable<LogstashFilter>;
list.AddRange(lf);
}
}
}
return list.ToArray();