diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-04-26 16:22:41 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-04-26 16:22:41 -0400 |
commit | 971bfd32d2f44d2fa1795807ce1ba1b700ff4f86 (patch) | |
tree | 23480fa01fe5fb0b00122973c5e3e5a6057156c3 | |
parent | afc8ae69fead4099ac86dcea6aa874f5b1540e29 (diff) | |
download | SMAPI-971bfd32d2f44d2fa1795807ce1ba1b700ff4f86.tar.gz SMAPI-971bfd32d2f44d2fa1795807ce1ba1b700ff4f86.tar.bz2 SMAPI-971bfd32d2f44d2fa1795807ce1ba1b700ff4f86.zip |
detect exceptions logged directly to the console and log them as errors
-rw-r--r-- | release-notes.md | 3 | ||||
-rw-r--r-- | src/StardewModdingAPI/Program.cs | 11 |
2 files changed, 12 insertions, 2 deletions
diff --git a/release-notes.md b/release-notes.md index dc800704..311128d0 100644 --- a/release-notes.md +++ b/release-notes.md @@ -15,9 +15,10 @@ See [log](https://github.com/Pathoschild/SMAPI/compare/1.10...1.11). For players: * Optimised console logging. +* Errors when loading a save are now shown in the SMAPI console. For mod developers: -* `Console.Out` messages are now written to the log file. +* `Console.Out` messages are now written to the log file. ## 1.10 See [log](https://github.com/Pathoschild/SMAPI/compare/1.9...1.10). diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs index 18a5c999..6e57fd65 100644 --- a/src/StardewModdingAPI/Program.cs +++ b/src/StardewModdingAPI/Program.cs @@ -248,7 +248,7 @@ namespace StardewModdingAPI { Monitor monitor = this.GetSecondaryMonitor("Console.Out"); if (monitor.WriteToConsole) - this.ConsoleManager.OnMessageIntercepted += line => monitor.Log(line, LogLevel.Trace); + this.ConsoleManager.OnMessageIntercepted += message => this.HandleConsoleMessage(monitor, message); } // add warning headers @@ -603,6 +603,15 @@ namespace StardewModdingAPI } } + /// <summary>Redirect messages logged directly to the console to the given monitor.</summary> + /// <param name="monitor">The monitor with which to log messages.</param> + /// <param name="message">The message to log.</param> + private void HandleConsoleMessage(IMonitor monitor, string message) + { + LogLevel level = message.Contains("Exception") ? LogLevel.Error : LogLevel.Trace; // intercept potential exceptions + monitor.Log(message, level); + } + /// <summary>Show a 'press any key to exit' message, and exit when they press a key.</summary> private void PressAnyKeyToExit() { |