Added additional diagnostics for logging

This commit is contained in:
Eric Fontana
2014-10-21 09:42:59 -04:00
parent 303d21d241
commit 87dc01b385
2 changed files with 26 additions and 9 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 // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.6.0")] [assembly: AssemblyVersion("1.3.7.0")]
[assembly: AssemblyFileVersion("1.3.6.0")] [assembly: AssemblyFileVersion("1.3.7.0")]

View File

@@ -28,13 +28,16 @@ namespace TimberWinR.Inputs
private long _receivedMessages; private long _receivedMessages;
private Dictionary<string, Int64> _logFileMaxRecords; private Dictionary<string, Int64> _logFileMaxRecords;
private Dictionary<string, DateTime> _logFileCreationTimes; private Dictionary<string, DateTime> _logFileCreationTimes;
private Dictionary<string, DateTime> _logFileSampleTimes;
private Dictionary<string, long> _logFileSizes; private Dictionary<string, long> _logFileSizes;
public LogsListener(TimberWinR.Parser.Log arguments, CancellationToken cancelToken, int pollingIntervalInSeconds = 3) public LogsListener(TimberWinR.Parser.Log arguments, CancellationToken cancelToken, int pollingIntervalInSeconds = 3)
: base(cancelToken, "Win32-FileLog") : base(cancelToken, "Win32-FileLog")
{ {
_logFileMaxRecords = new Dictionary<string, Int64>(); _logFileMaxRecords = new Dictionary<string, Int64>();
_logFileCreationTimes = new Dictionary<string, DateTime>(); _logFileCreationTimes = new Dictionary<string, DateTime>();
_logFileSampleTimes = new Dictionary<string, DateTime>();
_logFileSizes = new Dictionary<string, long>(); _logFileSizes = new Dictionary<string, long>();
_receivedMessages = 0; _receivedMessages = 0;
@@ -59,12 +62,19 @@ namespace TimberWinR.Inputs
new JProperty("log", new JProperty("log",
new JObject( new JObject(
new JProperty("messages", _receivedMessages), new JProperty("messages", _receivedMessages),
new JProperty("type", InputType),
new JProperty("location", _arguments.Location), new JProperty("location", _arguments.Location),
new JProperty("codepage", _arguments.CodePage), new JProperty("codepage", _arguments.CodePage),
new JProperty("splitLongLines", _arguments.SplitLongLines), new JProperty("splitLongLines", _arguments.SplitLongLines),
new JProperty("recurse", _arguments.Recurse), new JProperty("recurse", _arguments.Recurse),
new JProperty("files", new JProperty("files",
new JArray(from f in _logFileMaxRecords.Keys new JArray(from f in _logFileMaxRecords.Keys
select new JValue(f))),
new JProperty("fileSampleTimes",
new JArray(from f in _logFileSampleTimes.Values
select new JValue(f))),
new JProperty("fileSizes",
new JArray(from f in _logFileSizes.Values
select new JValue(f))), select new JValue(f))),
new JProperty("fileIndices", new JProperty("fileIndices",
new JArray(from f in _logFileMaxRecords.Values new JArray(from f in _logFileMaxRecords.Values
@@ -73,7 +83,7 @@ namespace TimberWinR.Inputs
new JArray(from f in _logFileCreationTimes.Values new JArray(from f in _logFileCreationTimes.Values
select new JValue(f))) select new JValue(f)))
))); )));
return json; return json;
} }
@@ -103,13 +113,20 @@ namespace TimberWinR.Inputs
string logName = record.getValue("LogFilename") as string; string logName = record.getValue("LogFilename") as string;
FileInfo fi = new FileInfo(logName); FileInfo fi = new FileInfo(logName);
fi.Refresh(); if (!fi.Exists)
{
_logFileCreationTimes.Remove(logName);
_logFileMaxRecords.Remove(logName);
_logFileSizes.Remove(logName);
}
_logFileSampleTimes[logName] = DateTime.UtcNow;
DateTime creationTime = fi.CreationTimeUtc; DateTime creationTime = fi.CreationTimeUtc;
bool logHasRolled = (_logFileCreationTimes.ContainsKey(logName) && bool logHasRolled = (_logFileCreationTimes.ContainsKey(logName) && creationTime > _logFileCreationTimes[logName]) ||
creationTime > _logFileCreationTimes[logName]) ||
(_logFileSizes.ContainsKey(logName) && fi.Length < _logFileSizes[logName]); (_logFileSizes.ContainsKey(logName) && fi.Length < _logFileSizes[logName]);
if (!_logFileMaxRecords.ContainsKey(logName) || logHasRolled) if (!_logFileMaxRecords.ContainsKey(logName) || logHasRolled)
{ {
_logFileCreationTimes[logName] = creationTime; _logFileCreationTimes[logName] = creationTime;