From b76d906c59d8aed3a98ca707d1c6fbfe8478f8ef Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Tue, 19 May 2020 21:14:06 -0700 Subject: [PATCH] Overhaul debug logging Debug logging now provides ConsoleDebug and ILog has been updated to support the concept of debug logs. Debug logs are now controlled by config.json instead of by preprocessor debug flag. --- CHANGELOG.md | 3 +++ TShockAPI/ConfigFile.cs | 3 +++ TShockAPI/ILog.cs | 16 ++++++++++++++-- TShockAPI/SqlLog.cs | 30 ++++++++++++++++++++++++------ TShockAPI/TextLog.cs | 30 ++++++++++++++++++++++++------ 5 files changed, 68 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ef4591b..88c853a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ This is the rolling changelog for TShock for Terraria. Use past tense when adding new entries; sign your name off when you add or change something. This should primarily be things like user changes, not necessarily codebase changes unless it's really relevant or large. +## Upcoming changes +* Debug logging now provides ConsoleDebug and ILog has been updated to support the concept of debug logs. Debug logs are now controlled by `config.json` instead of by preprocessor debug flag. (@hakusaro) + ## TShock 4.4.0 (Pre-release 3) * Fixed `/worldmode` command to correctly target world mode. (@Ristellise) * The following commands have been removed: `tbloodmoon`, `invade`, `dropmeteor`. `fullmoon`, `sandstorm`, `rain`, `eclipse` diff --git a/TShockAPI/ConfigFile.cs b/TShockAPI/ConfigFile.cs index d9a5b559..e440e241 100644 --- a/TShockAPI/ConfigFile.cs +++ b/TShockAPI/ConfigFile.cs @@ -520,6 +520,9 @@ namespace TShockAPI [Description("Whether or not to show backup auto save messages.")] public bool ShowBackupAutosaveMessages = true; + [Description("Whether or not the server should output debug level messages related to system operation.")] + public bool DebugLogs = false; + /// /// Reads a configuration file from a given path /// diff --git a/TShockAPI/ILog.cs b/TShockAPI/ILog.cs index 29a303ad..9fac3789 100644 --- a/TShockAPI/ILog.cs +++ b/TShockAPI/ILog.cs @@ -123,13 +123,25 @@ namespace TShockAPI void Write(string message, TraceLevel level); /// - /// Writes a debug string to the log file. Only works if the DEBUG preprocessor conditional is set. + /// Writes a debug string to the log file and console. Only works if the DebugLogs config option is set to true. + /// + /// The message to be written. + void ConsoleDebug(string message); + + /// + /// Writes a debug string to the log file. Only works if the DebugLogs config option is set to true. + /// + /// The message to be written. + void ConsoleDebug(string message, params object[] args); + + /// + /// Writes a debug string to the log file. Only works if the DebugLogs config option is set to true. /// /// The message to be written. void Debug(string message); /// - /// Writes a debug string to the log file. Only works if the DEBUG preprocessor conditional is set. + /// Writes a debug string to the log file. Only works if the DebugLogs config option is set to true. /// /// The format of the message to be written. /// The format arguments. diff --git a/TShockAPI/SqlLog.cs b/TShockAPI/SqlLog.cs index 3b035c81..a0fd4493 100644 --- a/TShockAPI/SqlLog.cs +++ b/TShockAPI/SqlLog.cs @@ -205,15 +205,34 @@ namespace TShockAPI ConsoleInfo(string.Format(format, args)); } + /// + /// Writes a debug string to the log file. Also outputs to the console. Requires config TShock.DebugLogs to be true. + /// + /// The message to be written. + public void ConsoleDebug(string message) + { + Console.WriteLine("Debug: " + message); + Write(message, TraceLevel.Verbose); + } + + /// + /// Writes a debug string to the log file. Also outputs to the console. Requires config TShock.DebugLogs to be true. + /// + /// The format of the message to be written. + /// The format arguments. + public void ConsoleDebug(string format, params object[] args) + { + ConsoleDebug(string.Format(format, args)); + } + /// /// Writes a debug string to the log file. /// /// The message to be written. public void Debug(string message) { -#if DEBUG - Write(message, TraceLevel.Verbose); -#endif + if (TShock.Config.DebugLogs) + Write(message, TraceLevel.Verbose); } /// @@ -223,9 +242,8 @@ namespace TShockAPI /// The format arguments. public void Debug(string format, params object[] args) { -#if DEBUG - Debug(string.Format(format, args)); -#endif + if (TShock.Config.DebugLogs) + Debug(string.Format(format, args)); } public void Write(string message, TraceLevel level) diff --git a/TShockAPI/TextLog.cs b/TShockAPI/TextLog.cs index 532c9ebf..349ceb01 100644 --- a/TShockAPI/TextLog.cs +++ b/TShockAPI/TextLog.cs @@ -172,15 +172,34 @@ namespace TShockAPI ConsoleInfo(string.Format(format, args)); } + /// + /// Writes a debug string to the log file. Also outputs to the console. Requires config TShock.DebugLogs to be true. + /// + /// The message to be written. + public void ConsoleDebug(string message) + { + Console.WriteLine("Debug: " + message); + Write(message, TraceLevel.Verbose); + } + + /// + /// Writes a debug string to the log file. Also outputs to the console. Requires config TShock.DebugLogs to be true. + /// + /// The format of the message to be written. + /// The format arguments. + public void ConsoleDebug(string format, params object[] args) + { + ConsoleDebug(string.Format(format, args)); + } + /// /// Writes a debug string to the log file. /// /// The message to be written. public void Debug(string message) { -#if DEBUG - Write(message, TraceLevel.Verbose); -#endif + if (TShock.Config.DebugLogs) + Write(message, TraceLevel.Verbose); } /// @@ -190,9 +209,8 @@ namespace TShockAPI /// The format arguments. public void Debug(string format, params object[] args) { -#if DEBUG - Debug(string.Format(format, args)); -#endif + if (TShock.Config.DebugLogs) + Debug(string.Format(format, args)); } ///