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/Models/LogLevel.cs | 24 +++++++++++ .../Framework/LogParsing/Models/LogMessage.cs | 24 +++++++++++ .../Framework/LogParsing/Models/ModInfo.cs | 24 +++++++++++ .../Framework/LogParsing/Models/ParsedLog.cs | 47 ++++++++++++++++++++++ 4 files changed, 119 insertions(+) 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/Models') diff --git a/src/SMAPI.Web/Framework/LogParsing/Models/LogLevel.cs b/src/SMAPI.Web/Framework/LogParsing/Models/LogLevel.cs new file mode 100644 index 00000000..40d21bf8 --- /dev/null +++ b/src/SMAPI.Web/Framework/LogParsing/Models/LogLevel.cs @@ -0,0 +1,24 @@ +namespace StardewModdingAPI.Web.Framework.LogParsing.Models +{ + /// The log severity levels. + public enum LogLevel + { + /// Tracing info intended for developers. + Trace, + + /// Troubleshooting info that may be relevant to the player. + Debug, + + /// Info relevant to the player. This should be used judiciously. + Info, + + /// An issue the player should be aware of. This should be used rarely. + Warn, + + /// A message indicating something went wrong. + Error, + + /// Important information to highlight for the player when player action is needed (e.g. new version available). This should be used rarely to avoid alert fatigue. + Alert + } +} diff --git a/src/SMAPI.Web/Framework/LogParsing/Models/LogMessage.cs b/src/SMAPI.Web/Framework/LogParsing/Models/LogMessage.cs new file mode 100644 index 00000000..baeac83c --- /dev/null +++ b/src/SMAPI.Web/Framework/LogParsing/Models/LogMessage.cs @@ -0,0 +1,24 @@ +namespace StardewModdingAPI.Web.Framework.LogParsing.Models +{ + /// A parsed log message. + public class LogMessage + { + /********* + ** Accessors + *********/ + /// The local time when the log was posted. + public string Time { get; set; } + + /// The log level. + public LogLevel Level { get; set; } + + /// The mod name. + public string Mod { get; set; } + + /// The log text. + public string Text { get; set; } + + /// The number of times this message was repeated consecutively. + public int Repeated { get; set; } + } +} diff --git a/src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs b/src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs new file mode 100644 index 00000000..2005e61f --- /dev/null +++ b/src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs @@ -0,0 +1,24 @@ +namespace StardewModdingAPI.Web.Framework.LogParsing.Models +{ + /// Metadata about a mod or content pack in the log. + public class LogModInfo + { + /********* + ** Accessors + *********/ + /// The mod name. + public string Name { get; set; } + + /// The mod author. + public string Author { get; set; } + + /// The mod version. + public string Version { get; set; } + + /// The mod description. + public string Description { get; set; } + + /// The number of errors logged by this mod. + public int Errors { get; set; } + } +} diff --git a/src/SMAPI.Web/Framework/LogParsing/Models/ParsedLog.cs b/src/SMAPI.Web/Framework/LogParsing/Models/ParsedLog.cs new file mode 100644 index 00000000..31ef2fe1 --- /dev/null +++ b/src/SMAPI.Web/Framework/LogParsing/Models/ParsedLog.cs @@ -0,0 +1,47 @@ +using System; + +namespace StardewModdingAPI.Web.Framework.LogParsing.Models +{ + /// Parsed metadata for a log. + public class ParsedLog + { + /********* + ** Accessors + *********/ + /**** + ** Metadata + ****/ + /// Whether the log file was successfully parsed. + public bool IsValid { get; set; } + + /// An error message indicating why the log file is invalid. + public string Error { get; set; } + + /// The raw text if is false. + public string RawTextIfError { get; set; } + + /**** + ** Log data + ****/ + /// The SMAPI version. + public string ApiVersion { get; set; } + + /// The game version. + public string GameVersion { get; set; } + + /// The player's operating system. + public string OperatingSystem { get; set; } + + /// The mod folder path. + public string ModPath { get; set; } + + /// The ISO 8601 timestamp when the log was started. + public DateTimeOffset Timestamp { get; set; } + + /// Metadata about installed mods and content packs. + public LogModInfo[] Mods { get; set; } = new LogModInfo[0]; + + /// The log messages. + public LogMessage[] Messages { get; set; } + } +} -- cgit