From 5dd883db255c70bbd22c4ae283916e3ad5c1f8d5 Mon Sep 17 00:00:00 2001 From: Kaz Wolfe Date: Sat, 10 Sep 2022 14:53:44 -0700 Subject: [PATCH] Fix missing plugin names in log, filter quirk - Re-add the [PluginName] tag to plugin log messages - Remove source prepending from the SerilogEventSink - Force a filter refresh on enabling/disabling log filtering - Convert ModuleLog to properly tag its messages with SourceContext --- .../Internal/Windows/ConsoleWindow.cs | 5 +- Dalamud/Logging/Internal/ModuleLog.cs | 46 +++++++++++++------ Dalamud/Logging/Internal/SerilogEventSink.cs | 6 --- Dalamud/Logging/PluginLog.cs | 9 +++- 4 files changed, 44 insertions(+), 22 deletions(-) diff --git a/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs b/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs index 259a9e487..272e987e4 100644 --- a/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs +++ b/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs @@ -152,7 +152,10 @@ namespace Dalamud.Interface.Internal.Windows // Filter menu if (ImGui.BeginPopup("Filters")) { - ImGui.Checkbox("Enabled", ref this.isFiltered); + if (ImGui.Checkbox("Enabled", ref this.isFiltered)) + { + this.Refilter(); + } if (ImGui.InputTextWithHint("##filterText", "Text Filter", ref this.textFilter, 255, ImGuiInputTextFlags.EnterReturnsTrue)) { diff --git a/Dalamud/Logging/Internal/ModuleLog.cs b/Dalamud/Logging/Internal/ModuleLog.cs index 2a0dd018d..60afbef35 100644 --- a/Dalamud/Logging/Internal/ModuleLog.cs +++ b/Dalamud/Logging/Internal/ModuleLog.cs @@ -1,5 +1,8 @@ using System; +using Serilog; +using Serilog.Events; + namespace Dalamud.Logging.Internal { /// @@ -8,15 +11,19 @@ namespace Dalamud.Logging.Internal public class ModuleLog { private readonly string moduleName; + private readonly ILogger moduleLogger; /// /// Initializes a new instance of the class. /// This class can be used to prefix logging messages with a Dalamud module name prefix. For example, "[PLUGINR] ...". /// /// The module name. - public ModuleLog(string moduleName) + public ModuleLog(string? moduleName) { - this.moduleName = moduleName; + // FIXME: Should be namespaced better, e.g. `Dalamud.PluginLoader`, but that becomes a relatively large + // change. + this.moduleName = moduleName ?? "DalamudInternal"; + this.moduleLogger = Log.ForContext("SourceContext", this.moduleName); } /// @@ -25,7 +32,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Verbose(string messageTemplate, params object[] values) - => Serilog.Log.Verbose($"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Verbose, messageTemplate, null, values); /// /// Log a templated verbose message to the in-game debug log. @@ -34,7 +41,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Verbose(Exception exception, string messageTemplate, params object[] values) - => Serilog.Log.Verbose(exception, $"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Verbose, messageTemplate, exception, values); /// /// Log a templated debug message to the in-game debug log. @@ -42,7 +49,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Debug(string messageTemplate, params object[] values) - => Serilog.Log.Debug($"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Debug, messageTemplate, null, values); /// /// Log a templated debug message to the in-game debug log. @@ -51,7 +58,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Debug(Exception exception, string messageTemplate, params object[] values) - => Serilog.Log.Debug(exception, $"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Debug, messageTemplate, exception, values); /// /// Log a templated information message to the in-game debug log. @@ -59,7 +66,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Information(string messageTemplate, params object[] values) - => Serilog.Log.Information($"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Information, messageTemplate, null, values); /// /// Log a templated information message to the in-game debug log. @@ -68,7 +75,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Information(Exception exception, string messageTemplate, params object[] values) - => Serilog.Log.Information(exception, $"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Information, messageTemplate, exception, values); /// /// Log a templated warning message to the in-game debug log. @@ -76,7 +83,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Warning(string messageTemplate, params object[] values) - => Serilog.Log.Warning($"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Warning, messageTemplate, null, values); /// /// Log a templated warning message to the in-game debug log. @@ -85,7 +92,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Warning(Exception exception, string messageTemplate, params object[] values) - => Serilog.Log.Warning(exception, $"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Warning, messageTemplate, exception, values); /// /// Log a templated error message to the in-game debug log. @@ -93,7 +100,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Error(string messageTemplate, params object[] values) - => Serilog.Log.Error($"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Error, messageTemplate, null, values); /// /// Log a templated error message to the in-game debug log. @@ -102,7 +109,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Error(Exception exception, string messageTemplate, params object[] values) - => Serilog.Log.Error(exception, $"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Error, messageTemplate, exception, values); /// /// Log a templated fatal message to the in-game debug log. @@ -110,7 +117,7 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Fatal(string messageTemplate, params object[] values) - => Serilog.Log.Fatal($"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Fatal, messageTemplate, null, values); /// /// Log a templated fatal message to the in-game debug log. @@ -119,6 +126,17 @@ namespace Dalamud.Logging.Internal /// The message template. /// Values to log. public void Fatal(Exception exception, string messageTemplate, params object[] values) - => Serilog.Log.Fatal(exception, $"[{this.moduleName}] {messageTemplate}", values); + => this.WriteLog(LogEventLevel.Fatal, messageTemplate, exception, values); + + private void WriteLog(LogEventLevel level, string messageTemplate, Exception? exception = null, params object[] values) + { + // FIXME: Eventually, the `pluginName` tag should be removed from here and moved over to the actual log + // formatter. + this.moduleLogger.Write( + level, + exception: exception, + messageTemplate: $"[{this.moduleName}] {messageTemplate}", + values); + } } } diff --git a/Dalamud/Logging/Internal/SerilogEventSink.cs b/Dalamud/Logging/Internal/SerilogEventSink.cs index 9327f672c..eda1a0cb3 100644 --- a/Dalamud/Logging/Internal/SerilogEventSink.cs +++ b/Dalamud/Logging/Internal/SerilogEventSink.cs @@ -40,12 +40,6 @@ namespace Dalamud.Logging.Internal { var message = logEvent.RenderMessage(this.formatProvider); - if (logEvent.Properties.TryGetValue("SourceContext", out var sourceProp) && - sourceProp is ScalarValue { Value: string source }) - { - message = $"[{source}] {message}"; - } - if (logEvent.Exception != null) { message += "\n" + logEvent.Exception; diff --git a/Dalamud/Logging/PluginLog.cs b/Dalamud/Logging/PluginLog.cs index 5b1de1f64..bad839c25 100644 --- a/Dalamud/Logging/PluginLog.cs +++ b/Dalamud/Logging/PluginLog.cs @@ -248,7 +248,14 @@ namespace Dalamud.Logging private static void WriteLog(string? pluginName, LogEventLevel level, string messageTemplate, Exception? exception = null, params object[] values) { var pluginLogger = GetPluginLogger(pluginName); - pluginLogger.Write(level, exception: exception, messageTemplate: messageTemplate, values); + + // FIXME: Eventually, the `pluginName` tag should be removed from here and moved over to the actual log + // formatter. + pluginLogger.Write( + level, + exception: exception, + messageTemplate: $"[{pluginName}] {messageTemplate}", + values); } } }