From d7696912e007a2b455a2fd5e1974924d2efe83b3 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 24 Feb 2018 16:51:37 -0500 Subject: reimplement log parser with serverside parsing and vue.js frontend --- .../Framework/LogParsing/LogParseException.cs | 15 ++ src/SMAPI.Web/Framework/LogParsing/LogParser.cs | 222 +++++++++++++++++++++ .../Framework/LogParsing/Models/LogLevel.cs | 24 +++ .../Framework/LogParsing/Models/LogMessage.cs | 24 +++ .../Framework/LogParsing/Models/ModInfo.cs | 24 +++ .../Framework/LogParsing/Models/ParsedLog.cs | 47 +++++ 6 files changed, 356 insertions(+) create mode 100644 src/SMAPI.Web/Framework/LogParsing/LogParseException.cs create mode 100644 src/SMAPI.Web/Framework/LogParsing/LogParser.cs create mode 100644 src/SMAPI.Web/Framework/LogParsing/Models/LogLevel.cs create mode 100644 src/SMAPI.Web/Framework/LogParsing/Models/LogMessage.cs create mode 100644 src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs create mode 100644 src/SMAPI.Web/Framework/LogParsing/Models/ParsedLog.cs (limited to 'src/SMAPI.Web/Framework/LogParsing') diff --git a/src/SMAPI.Web/Framework/LogParsing/LogParseException.cs b/src/SMAPI.Web/Framework/LogParsing/LogParseException.cs new file mode 100644 index 00000000..5d4c8c08 --- /dev/null +++ b/src/SMAPI.Web/Framework/LogParsing/LogParseException.cs @@ -0,0 +1,15 @@ +using System; + +namespace StardewModdingAPI.Web.Framework.LogParsing +{ + /// An error while parsing the log file which doesn't require a stack trace to troubleshoot. + internal class LogParseException : Exception + { + /********* + ** Public methods + *********/ + /// Construct an instance. + /// The user-friendly error message. + public LogParseException(string message) : base(message) { } + } +} diff --git a/src/SMAPI.Web/Framework/LogParsing/LogParser.cs b/src/SMAPI.Web/Framework/LogParsing/LogParser.cs new file mode 100644 index 00000000..1c3b5671 --- /dev/null +++ b/src/SMAPI.Web/Framework/LogParsing/LogParser.cs @@ -0,0 +1,222 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using StardewModdingAPI.Web.Framework.LogParsing.Models; + +namespace StardewModdingAPI.Web.Framework.LogParsing +{ + /// Parses SMAPI log files. + public class LogParser + { + /********* + ** Properties + *********/ + /// A regex pattern matching the start of a SMAPI message. + private readonly Regex MessageHeaderPattern = new Regex(@"^\[(?