Added additional diagnostics for logging
This commit is contained in:
@@ -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")]
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user