11 Commits

Author SHA1 Message Date
Eric Fontana
b07d15c9aa Must use secure version of url 2015-06-04 08:33:18 -04:00
Eric Fontana
063471ff28 Publish to Chocolatey use correct server. 2015-06-04 08:21:54 -04:00
Eric Fontana
606d72b55f .nuspec template needed version number fixing 2015-06-04 08:04:06 -04:00
Eric Fontana
d89e949185 Fixed version number for nuget package scripts. 2015-06-04 08:02:13 -04:00
Eric Fontana
d93ea4a5a2 Yaml wants spaces not tabs. 2015-06-04 07:52:05 -04:00
Eric Fontana
062b076c61 Commands must have newlines. 2015-06-04 07:50:55 -04:00
Eric Fontana
1312e2ddd5 Fixed tab -> spaces 2015-06-04 07:42:43 -04:00
Eric Fontana
9fe7e1e15a Package for choco after build. 2015-06-04 07:39:59 -04:00
Eric Fontana
9e11c4c926 Use correct env var for version. 2015-06-04 07:37:19 -04:00
Eric Fontana
1f211f2713 Fixed powershell before_build 2015-06-04 07:34:02 -04:00
Eric Fontana
2aebd5689a First attempt at new yaml. 2015-06-04 07:21:08 -04:00
17 changed files with 96 additions and 170 deletions

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.27.0")]
[assembly: AssemblyFileVersion("1.3.27.0")]
[assembly: AssemblyVersion("1.3.26.0")]
[assembly: AssemblyFileVersion("1.3.26.0")]

View File

@@ -8,7 +8,7 @@ using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Linq.Expressions;
using Newtonsoft.Json.Linq;
using NLog;
@@ -52,48 +52,29 @@ namespace TimberWinR.Diagnostics
public JObject DiagnosticsOutput()
{
JObject json = new JObject(
new JProperty("timberwinr",
new JObject(
new JProperty("version", Assembly.GetEntryAssembly().GetName().Version.ToString()),
new JProperty("messages", Manager.NumMessages),
new JProperty("startedon", Manager.StartedOn),
new JProperty("configfile", Manager.JsonConfig),
new JProperty("logdir", Manager.LogfileDir),
new JProperty("logginglevel", LogManager.GlobalThreshold.ToString())
)));
AddDiagnosis(json);
new JProperty("timberwinr",
new JObject(
new JProperty("version", Assembly.GetEntryAssembly().GetName().Version.ToString()),
new JProperty("messages", Manager.NumMessages),
new JProperty("startedon", Manager.StartedOn),
new JProperty("configfile", Manager.JsonConfig),
new JProperty("logdir", Manager.LogfileDir),
new JProperty("logginglevel", LogManager.GlobalThreshold.ToString()),
new JProperty("inputs",
new JArray(
from i in Manager.Listeners
select new JObject(i.ToJson()))),
new JProperty("filters",
new JArray(
from f in Manager.Config.Filters
select new JObject(f.ToJson()))),
new JProperty("outputs",
new JArray(
from o in Manager.Outputs
select new JObject(o.ToJson()))))));
return json;
}
protected void AddDiagnosis(JObject wrapper)
{
wrapper.Add("inputs", GetDiagnosisByType("inputs", Manager.Listeners.ToList<IDiagnosable>()));
wrapper.Add("filters", GetDiagnosisByType("filters", Manager.Config.Filters.ToList<IDiagnosable>()));
wrapper.Add("outputs", GetDiagnosisByType("inputs", Manager.Outputs.ToList<IDiagnosable>()));
}
protected JObject GetDiagnosisByType(String type, List<IDiagnosable> diags)
{
JObject category = new JObject();
foreach(IDiagnosable diag in diags)
{
JArray array = GetTypeArray(diag.GetType().Name.ToString(), category);
array.Add(diag.ToJson());
}
return category;
}
protected JArray GetTypeArray(String name, JObject category)
{
JArray ret = (JArray)category.GetValue(name);
if (ret == null)
{
ret = new JArray();
category.Add(new JProperty(name, ret));
}
return ret;
}
private void DiagnosticCallback(IAsyncResult result)
{
if (web == null)

View File

@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;
namespace TimberWinR.Diagnostics
{
public interface IDiagnosable
{
JObject ToJson();
}
}

View File

@@ -135,6 +135,8 @@ namespace TimberWinR.Inputs
rs.close();
GC.Collect();
}
if (!Stop)
syncHandle.Wait(TimeSpan.FromSeconds(_pollingIntervalInSeconds), CancelToken);
}
catch (OperationCanceledException)
{
@@ -143,18 +145,7 @@ namespace TimberWinR.Inputs
catch (Exception ex)
{
LogManager.GetCurrentClassLogger().Error(ex);
}
finally
{
try
{
if (!Stop)
syncHandle.Wait(TimeSpan.FromSeconds(_pollingIntervalInSeconds), CancelToken);
}
catch (Exception)
{
}
}
}
}
}
}

View File

@@ -8,11 +8,10 @@ using System.Linq;
using System.Text;
using System.Threading;
using NLog;
using TimberWinR.Diagnostics;
namespace TimberWinR.Inputs
{
public abstract class InputListener: IDiagnosable
public abstract class InputListener
{
public CancellationToken CancelToken { get; set; }
public event Action<JObject> OnMessageRecieved;

View File

@@ -8,7 +8,6 @@ using TimberWinR.Parser;
using LogQuery = Interop.MSUtil.LogQueryClassClass;
using EventLogInputFormat = Interop.MSUtil.COMEventLogInputContextClassClass;
using LogRecordSet = Interop.MSUtil.ILogRecordset;
using System.IO;
namespace TimberWinR.Inputs
{
@@ -98,13 +97,12 @@ namespace TimberWinR.Inputs
// Execute the query
if (!CancelToken.IsCancellationRequested)
{
var oLogQuery = new LogQuery();
try
{
{
var oLogQuery = new LogQuery();
var qfiles = string.Format("SELECT Distinct [EventLog] FROM {0}", location);
var rsfiles = oLogQuery.Execute(qfiles, iFmt);
for (; !rsfiles.atEnd(); rsfiles.moveNext())
{
var record = rsfiles.getRecord();
@@ -115,7 +113,7 @@ namespace TimberWinR.Inputs
logName);
var rcount = oLogQuery.Execute(qcount, iFmt);
var qr = rcount.getRecord();
var lrn = (Int64) qr.getValueEx("MaxRecordNumber");
var lrn = (Int64)qr.getValueEx("MaxRecordNumber");
logFileMaxRecords[logName] = lrn;
}
}
@@ -139,13 +137,12 @@ namespace TimberWinR.Inputs
object v = record.getValue(field.Name);
if (field.Name == "Data")
v = ToPrintable(v.ToString());
if ((field.Name == "TimeGenerated" || field.Name == "TimeWritten") &&
field.DataType == typeof (DateTime))
if ((field.Name == "TimeGenerated" || field.Name == "TimeWritten") && field.DataType == typeof (DateTime))
v = ((DateTime) v).ToUniversalTime();
json.Add(new JProperty(field.Name, v));
}
var lrn = (Int64) record.getValueEx("RecordNumber");
var lrn = (Int64)record.getValueEx("RecordNumber");
logFileMaxRecords[fileName] = lrn;
ProcessJson(json);
@@ -166,24 +163,6 @@ namespace TimberWinR.Inputs
{
LogManager.GetCurrentClassLogger().Error(ex);
}
finally
{
try
{
oLogQuery = null;
// Sleep
if (!Stop)
syncHandle.Wait(TimeSpan.FromSeconds(_pollingIntervalInSeconds), CancelToken);
}
catch (OperationCanceledException)
{
}
catch (Exception ex1)
{
LogManager.GetCurrentClassLogger().Warn(ex1);
}
}
}
}
Finished();

View File

@@ -4,12 +4,11 @@ using System.Linq;
using System.Text;
using System.Threading;
using Newtonsoft.Json.Linq;
using TimberWinR.Diagnostics;
using TimberWinR.Inputs;
namespace TimberWinR.Outputs
{
public abstract class OutputSender : IDiagnosable
public abstract class OutputSender
{
public CancellationToken CancelToken { get; private set; }
private List<InputListener> _inputs;

View File

@@ -132,7 +132,6 @@ namespace TimberWinR.Outputs
private long _errorCount;
private long _redisDepth;
private DateTime? _lastErrorTimeUTC;
private DateTime? _lastSentTimeUTC;
private readonly int _maxQueueSize;
private readonly bool _queueOverflowDiscardOldest;
private BatchCounter _batchCounter;
@@ -181,7 +180,6 @@ namespace TimberWinR.Outputs
new JProperty("host", string.Join(",", _redisHosts)),
new JProperty("errors", _errorCount),
new JProperty("lastErrorTimeUTC", _lastErrorTimeUTC),
new JProperty("lastSentTimeUTC", _lastSentTimeUTC),
new JProperty("redisQueueDepth", _redisDepth),
new JProperty("sentMessageCount", _sentMessages),
new JProperty("queuedMessageCount", _jsonQueue.Count),
@@ -319,13 +317,9 @@ namespace TimberWinR.Outputs
_batchCounter.SampleQueueDepth(_jsonQueue.Count);
// Re-compute current batch size
LogManager.GetCurrentClassLogger()
.Trace("{0}: Average Queue Depth: {1}, Current Length: {2}",
Thread.CurrentThread.ManagedThreadId, _batchCounter.AverageQueueDepth(),
_jsonQueue.Count);
_currentBatchCount = _batchCounter.UpdateCurrentBatchCount(_jsonQueue.Count,
_currentBatchCount);
LogManager.GetCurrentClassLogger().Trace("{0}: Average Queue Depth: {1}, Current Length: {2}", Thread.CurrentThread.ManagedThreadId, _batchCounter.AverageQueueDepth(), _jsonQueue.Count);
_currentBatchCount = _batchCounter.UpdateCurrentBatchCount(_jsonQueue.Count, _currentBatchCount);
messages = _jsonQueue.Take(_currentBatchCount).ToArray();
_jsonQueue.RemoveRange(0, messages.Length);
@@ -346,9 +340,7 @@ namespace TimberWinR.Outputs
{
client.StartPipe();
LogManager.GetCurrentClassLogger()
.Debug("{0}: Sending {1} Messages to {2}",
Thread.CurrentThread.ManagedThreadId, messages.Length,
client.Host);
.Debug("{0}: Sending {1} Messages to {2}", Thread.CurrentThread.ManagedThreadId, messages.Length, client.Host);
try
{
@@ -356,7 +348,6 @@ namespace TimberWinR.Outputs
Interlocked.Add(ref _sentMessages, messages.Length);
client.EndPipe();
sentSuccessfully = true;
_lastSentTimeUTC = DateTime.UtcNow;
if (messages.Length > 0)
_manager.IncrementMessageCount(messages.Length);
}
@@ -400,7 +391,9 @@ namespace TimberWinR.Outputs
_jsonQueue.InsertRange(0, messages);
}
}
}
}
if (!Stop)
syncHandle.Wait(TimeSpan.FromMilliseconds(_interval), CancelToken);
}
catch (OperationCanceledException)
{
@@ -416,17 +409,6 @@ namespace TimberWinR.Outputs
Interlocked.Increment(ref _errorCount);
LogManager.GetCurrentClassLogger().Error(ex);
}
finally
{
try
{
if (!Stop)
syncHandle.Wait(TimeSpan.FromMilliseconds(_interval), CancelToken);
}
catch (Exception)
{
}
}
}
}
}

View File

@@ -15,7 +15,6 @@ using NLog;
using NLog.Config;
using TimberWinR.Outputs;
using System.CodeDom.Compiler;
using TimberWinR.Diagnostics;
namespace TimberWinR.Parser
{
@@ -27,7 +26,7 @@ namespace TimberWinR.Parser
}
public abstract class LogstashFilter : IValidateSchema, IDiagnosable
public abstract class LogstashFilter : IValidateSchema
{
public abstract bool Apply(JObject json);

View File

@@ -96,7 +96,6 @@
<Compile Include="Configuration.cs" />
<Compile Include="ConfigurationErrors.cs" />
<Compile Include="Diagnostics\Diagnostics.cs" />
<Compile Include="Diagnostics\IDiagnosable.cs" />
<Compile Include="Filters\DateFilter.cs" />
<Compile Include="Filters\FilterBase.cs" />
<Compile Include="Filters\GrokFilter.cs" />

View File

@@ -65,5 +65,3 @@ After a successful parse of an event, the following fields are added:
| Message | STRING | The full event message |
| Data | STRING | The binary data associated with the event |

View File

@@ -1,38 +1,50 @@
version: build_number_{build}
configuration: Release
skip_tags: true
init:
- ps: "$v = [regex]::match($env:APPVEYOR_REPO_BRANCH,'release/(.*)').Groups[1].Value\nWrite-Host \"On branch $($env:APPVEYOR_REPO_BRANCH)\"\nIF($v) { \n $env:VERSION_FROM_BRANCH = \"$($v).$($env:APPVEYOR_BUILD_NUMBER)\"\n} else {\n $env:VERSION_FROM_BRANCH = \"0.0.0.$($env:APPVEYOR_BUILD_NUMBER)\"\n}\nWrite-Host \"Set version to $($env:VERSION_FROM_BRANCH)\""
assembly_info:
patch: true
file: '**\AssemblyInfo.*'
assembly_version: $(VERSION_FROM_BRANCH)
assembly_file_version: $(VERSION_FROM_BRANCH)
assembly_informational_version: $(VERSION_FROM_BRANCH)
before_build:
- ps: >-
mkdir tools
NuGet.exe restore TimberWinR.sln
build:
verbosity: normal
after_build:
- ps: >-
cat chocolateyInstall.ps1.template|%{$_-replace "\$\{version\}",$env:VERSION_FROM_BRANCH} > tools\chocolateyInstall.ps1
cat chocolateyUninstall.ps1.template|%{$_-replace "\$\{version\}",$env:VERSION_FROM_BRANCH} > tools\chocolateyUninstall.ps1
cat tools\chocolateyUninstall.ps1
cat timberwinr.nuspec.template|%{$_-replace "\$\{version\}",$env:VERSION_FROM_BRANCH} > timberwinr.nuspec
choco pack timberwinr.nuspec
artifacts:
- path: .\*.nupkg
name: NuGet
- path: TimberWinR.ServiceHost\bin\*\*.dll
name: Dlls
- path: TimberWinR.ServiceHost\bin\*\*.exe
name: Exes
- path: TimberWix\bin\*\*.msi
name: MSI
version: build_number_{build}
configuration: Release
skip_tags: true
init:
- ps: "$v = [regex]::match($env:APPVEYOR_REPO_BRANCH,'release/(.*)').Groups[1].Value\nWrite-Host \"On branch $($env:APPVEYOR_REPO_BRANCH)\"\nIF($v) { \n $env:VERSION_FROM_BRANCH = \"$($v).$($env:APPVEYOR_BUILD_NUMBER)\"\n} else {\n $env:VERSION_FROM_BRANCH = \"0.0.0.$($env:APPVEYOR_BUILD_NUMBER)\"\n}\nWrite-Host \"Set version to $($env:VERSION_FROM_BRANCH)\""
assembly_info:
patch: true
file: '**\AssemblyInfo.*'
assembly_version: $(VERSION_FROM_BRANCH)
assembly_file_version: $(VERSION_FROM_BRANCH)
assembly_informational_version: $(VERSION_FROM_BRANCH)
before_build:
- ps: >-
mkdir tools
NuGet.exe restore TimberWinR.sln
build:
verbosity: normal
after_build:
- ps: >-
cat chocolateyInstall.ps1.template|%{$_-replace "\$\{version\}",$env:VERSION_FROM_BRANCH} > tools\chocolateyInstall.ps1
cat chocolateyUninstall.ps1.template|%{$_-replace "\$\{version\}",$env:VERSION_FROM_BRANCH} > tools\chocolateyUninstall.ps1
cat tools\chocolateyUninstall.ps1
cat timberwinr.nuspec.template|%{$_-replace "\$\{version\}",$env:VERSION_FROM_BRANCH} > timberwinr.nuspec
choco pack timberwinr.nuspec
artifacts:
- path: .\*.nupkg
name: NuGet
- path: TimberWinR.ServiceHost\bin\*\*.dll
name: Dlls
- path: TimberWinR.ServiceHost\bin\*\*.exe
name: Exes
- path: TimberWix\bin\*\*.msi
name: MSI
deploy:
- provider: NuGet
server: https://chocolatey.org/
api_key:
secure: y8zhZTNm3PWLLxtKiMO79Shx3TyG3lnuGpJ6J7GT+2SihEspFxuBXz+WvmI6qzX+
skip_symbols: true
artifact: NuGet
on:
branch: /release/.*/
- provider: GitHub
release: $(VERSION_FROM_BRANCH)
auth_token:

View File

@@ -2,7 +2,7 @@
$fileType = 'msi'
$silentArgs = '/quiet'
$scriptPath = $(Split-Path $MyInvocation.MyCommand.Path)
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.0.msi'
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.msi'
try {
Install-ChocolateyInstallPackage $packageName $fileType $silentArgs $fileFullPath
} catch {

View File

@@ -1,7 +1,7 @@
$packageName = 'TimberWinR-${version}' # arbitrary name for the package, used in messages
$installerType = 'msi' #only one of these: exe, msi, msu
$scriptPath = $(Split-Path $MyInvocation.MyCommand.Path)
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.0.msi'
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.msi'
$silentArgs = '${PROJECTGUID} /quiet'
$validExitCodes = @(0) #please insert other valid exit codes here, exit codes for ms http://msdn.microsoft.com/en-us/library/aa368542(VS.85).aspx
UnInstall-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "fileFullPath" -validExitCodes $validExitCodes

View File

@@ -1,7 +1,7 @@
$packageName = 'TimberWinR-${version}' # arbitrary name for the package, used in messages
$installerType = 'msi' #only one of these: exe, msi, msu
$scriptPath = $(Split-Path $MyInvocation.MyCommand.Path)
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.0.msi'
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.msi'
$silentArgs = '{E001D138-669B-4604-88C5-02C756461C15} /quiet'
$validExitCodes = @(0) #please insert other valid exit codes here, exit codes for ms http://msdn.microsoft.com/en-us/library/aa368542(VS.85).aspx
UnInstall-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "fileFullPath" -validExitCodes $validExitCodes

View File

@@ -1,7 +1,7 @@
$packageName = 'TimberWinR-${version}' # arbitrary name for the package, used in messages
$installerType = 'msi' #only one of these: exe, msi, msu
$scriptPath = $(Split-Path $MyInvocation.MyCommand.Path)
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.0.msi'
$fileFullPath = Join-Path $scriptPath 'TimberWinR-${version}.msi'
$silentArgs = '${PROJECTGUID} /quiet'
$validExitCodes = @(0) #please insert other valid exit codes here, exit codes for ms http://msdn.microsoft.com/en-us/library/aa368542(VS.85).aspx
UnInstall-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "fileFullPath" -validExitCodes $validExitCodes

View File

@@ -5,7 +5,7 @@
<!-- Read this before publishing packages to chocolatey.org: https://github.com/chocolatey/chocolatey/wiki/CreatePackages -->
<id>TimberWinR</id>
<title>TimberWinR</title>
<version>${version}.0</version>
<version>${version}</version>
<authors>efontana</authors>
<owners>Eric Fontana</owners>
<summary>TimberWinR Shipper</summary>