aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs')
-rw-r--r--Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs54
1 files changed, 44 insertions, 10 deletions
diff --git a/Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs b/Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs
index 2870ce95d..e91734ada 100644
--- a/Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs
+++ b/Software/Visual_Studio/Tango.Logging/ApplicationLogFileParser.cs
@@ -17,16 +17,26 @@ namespace Tango.Logging
List<LogFile> logFiles = new List<LogFile>();
FileLogger logger = LogManager.Default.RegisteredLoggers.FirstOrDefault(x => x.GetType() == typeof(FileLogger)) as FileLogger;
-
- String logFile = logger != null ? logger.LogFile : null;
-
- foreach (var file in Directory.GetFiles(FileLogger.DefaultLogsFolder, "*.log").Where(x => Path.GetFileName(x).StartsWith(logger.Tag) && x != logger.LogFile))
+ HashSet<string> dateStrings = new HashSet<string>();
+ foreach (var file in Directory.GetFiles(FileLogger.DefaultLogsFolder, "*.log").Where(x => (Path.GetFileName(x).StartsWith(logger.Tag) && x != logger.LogFile)))
{
try
{
String dateString = Path.GetFileNameWithoutExtension(file).Replace($"{logger.Tag}-", "");
- DateTime date = DateTime.ParseExact(dateString, "dd-MM-yyyy_HH-mm-ss", CultureInfo.InvariantCulture);
- logFiles.Add(new LogFile() { DateTime = date, File = file });
+ int indexPos = dateString.IndexOf(FileLogger.FILE_SET_EXTENSION);
+ int indexOfFile = 0;
+ if (indexPos > 0)
+ {
+ string fileNameIndex = dateString.Substring(indexPos + FileLogger.FILE_SET_EXTENSION.Length);
+ int.TryParse(fileNameIndex, out indexOfFile);
+ dateString = dateString.Substring(0, indexPos);
+ }
+ if (!dateStrings.Contains(dateString))
+ {
+ dateStrings.Add(dateString);
+ DateTime date = DateTime.ParseExact(dateString, "dd-MM-yyyy_HH-mm-ss", CultureInfo.InvariantCulture);
+ logFiles.Add(new LogFile() { DateTime = date, File = file, PartOfSet = indexOfFile > 0, });
+ }
}
catch (Exception ex)
{
@@ -40,8 +50,34 @@ namespace Tango.Logging
public List<LogItemBase> Parse(LogFile logFile)
{
List<LogItemBase> logItems = new List<LogItemBase>();
+ List<LogFile> logFiles = new List<LogFile>();
+ FileLogger logger = LogManager.Default.RegisteredLoggers.FirstOrDefault(x => x.GetType() == typeof(FileLogger)) as FileLogger;
+ if (logFile.PartOfSet)
+ {
+ string fileName = Path.GetFileNameWithoutExtension(logFile.File);
+ string extension = Path.GetExtension(logFile.File);
+ int indexPos = fileName.IndexOf(FileLogger.FILE_SET_EXTENSION);
+ if (indexPos > 0)
+ {
+ fileName = fileName.Substring(0, indexPos);
+ }
+ string[] fileEntries = Directory.GetFiles(FileLogger.DefaultLogsFolder, $"{fileName}*{extension}").Where(x => Path.GetFileName(x).StartsWith(logger.Tag) && x != logger.LogFile).OrderBy(x => x).ToArray();
+ foreach (var file in fileEntries)
+ {
+ Parse(file, logFile.DateTime, ref logItems);
+ }
+ }
+ else
+ {
+ Parse(logFile.File, logFile.DateTime, ref logItems);
+ }
- String text = File.ReadAllText(logFile.File);
+ return logItems;
+ }
+
+ private void Parse(string file, DateTime datetime, ref List<LogItemBase> logItems)
+ {
+ String text = File.ReadAllText(file);
var logs = Regex.Split(text, @"(\[\d{2}:\d{2}:\d{2}.\d{2}\])");
for (int i = 1; i < logs.Length; i += 2)
@@ -54,7 +90,7 @@ namespace Tango.Logging
var entries = Regex.Split(rest, @"\[(.*?)\]");
MessageLogItem item = new MessageLogItem();
- item.TimeStamp = new DateTime(logFile.DateTime.Year, logFile.DateTime.Month, logFile.DateTime.Day, date.Hour, date.Minute, date.Second, date.Millisecond);
+ item.TimeStamp = new DateTime(datetime.Year, datetime.Month, datetime.Day, date.Hour, date.Minute, date.Second, date.Millisecond);
item.Category = (LogCategory)Enum.Parse(typeof(LogCategory), entries[1]);
item.CallerFile = entries[3];
item.CallerMethodName = entries[5];
@@ -68,8 +104,6 @@ namespace Tango.Logging
LogManager.Default.Log(ex, "Could not parse log line: " + logs[i]);
}
}
-
- return logItems;
}
}
}