From d4a757be49dc3b69f25306d2cae9f850f0a03010 Mon Sep 17 00:00:00 2001 From: dcog989 Date: Sat, 13 Sep 2025 19:57:54 +0100 Subject: [PATCH] Enhanced logging User can now choose None, Error, Info, or Debug. --- Flow.Launcher.Infrastructure/Logger/Log.cs | 42 +++++++++---------- .../UserSettings/Settings.cs | 2 +- Flow.Launcher/Languages/en.xaml | 8 ++-- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Flow.Launcher.Infrastructure/Logger/Log.cs b/Flow.Launcher.Infrastructure/Logger/Log.cs index 09eb98f46..409e4cf6e 100644 --- a/Flow.Launcher.Infrastructure/Logger/Log.cs +++ b/Flow.Launcher.Infrastructure/Logger/Log.cs @@ -16,7 +16,7 @@ namespace Flow.Launcher.Infrastructure.Logger public static string CurrentLogDirectory { get; } - static Log() +static Log() { CurrentLogDirectory = DataLocation.VersionLogDirectory; if (!Directory.Exists(CurrentLogDirectory)) @@ -34,7 +34,7 @@ namespace Flow.Launcher.Infrastructure.Logger var fileTarget = new FileTarget { - FileName = CurrentLogDirectory.Replace(@"\", "/") + "/${shortdate}.txt", + FileName = CurrentLogDirectory.Replace(@"\", "/") + "/Flow.Launcher.${date:format=yyyyMMdd}.log", Layout = layout }; @@ -45,6 +45,8 @@ namespace Flow.Launcher.Infrastructure.Logger Layout = layout }; + + configuration.AddTarget("file", fileTargetASyncWrapper); configuration.AddTarget("debug", debugTarget); @@ -65,26 +67,22 @@ namespace Flow.Launcher.Infrastructure.Logger public static void SetLogLevel(LOGLEVEL level) { - switch (level) + var rule = LogManager.Configuration.FindRuleByName("file"); + + var nlogLevel = level switch { - case LOGLEVEL.DEBUG: - UseDebugLogLevel(); - break; - default: - UseInfoLogLevel(); - break; - } - Info(nameof(Logger), $"Using log level: {level}."); - } + LOGLEVEL.None => LogLevel.Off, + LOGLEVEL.Error => LogLevel.Error, + LOGLEVEL.Debug => LogLevel.Debug, + _ => LogLevel.Info + }; - private static void UseDebugLogLevel() - { - LogManager.Configuration.FindRuleByName("file").SetLoggingLevels(LogLevel.Debug, LogLevel.Fatal); - } + rule.SetLoggingLevels(nlogLevel, LogLevel.Fatal); - private static void UseInfoLogLevel() - { - LogManager.Configuration.FindRuleByName("file").SetLoggingLevels(LogLevel.Info, LogLevel.Fatal); + LogManager.ReconfigExistingLoggers(); + + // We can't log Info when level is set to Error or None, so we use Debug + Debug(nameof(Logger), $"Using log level: {level}."); } private static void LogFaultyFormat(string message) @@ -169,7 +167,9 @@ namespace Flow.Launcher.Infrastructure.Logger public enum LOGLEVEL { - DEBUG, - INFO + None, + Error, + Info, + Debug } } diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index 0c3402050..8ac900cf6 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -340,7 +340,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings public DialogJumpFileResultBehaviours DialogJumpFileResultBehaviour { get; set; } = DialogJumpFileResultBehaviours.FullPath; [JsonConverter(typeof(JsonStringEnumConverter))] - public LOGLEVEL LogLevel { get; set; } = LOGLEVEL.INFO; + public LOGLEVEL LogLevel { get; set; } = LOGLEVEL.Info; /// /// when false Alphabet static service will always return empty results diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index d2f78e1f6..2d6810197 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -459,11 +459,13 @@ Wizard User Data Location User settings and installed plugins are saved in the user data folder. This location may vary depending on whether it's in portable mode or not. - Open Folder +Open Folder Advanced Log Level - Debug - Info + None + Error + Info + Debug Setting Window Font