Jelajahi Sumber

misc: add the ability to ignore UI logs when using trace & debug log levels

Evan Husted 1 tahun lalu
induk
melakukan
f3cf03495d

+ 50 - 0
src/Ryujinx/Assets/locales.json

@@ -5747,6 +5747,31 @@
         "zh_TW": "啟用客體日誌"
       }
     },
+    {
+      "ID": "SettingsTabLoggingEnableAvaloniaLogs",
+      "Translations": {
+        "ar_SA": "",
+        "de_DE": "",
+        "el_GR": "",
+        "en_US": "Enable UI Logs",
+        "es_ES": "",
+        "fr_FR": "",
+        "he_IL": "",
+        "it_IT": "",
+        "ja_JP": "",
+        "ko_KR": "",
+        "no_NO": "",
+        "pl_PL": "",
+        "pt_BR": "",
+        "ru_RU": "",
+        "sv_SE": "",
+        "th_TH": "",
+        "tr_TR": "",
+        "uk_UA": "",
+        "zh_CN": "",
+        "zh_TW": ""
+      }
+    },
     {
       "ID": "SettingsTabLoggingEnableFsAccessLogs",
       "Translations": {
@@ -16722,6 +16747,31 @@
         "zh_TW": "謹慎使用"
       }
     },
+    {
+      "ID": "AvaloniaLogTooltip",
+      "Translations": {
+        "ar_SA": "",
+        "de_DE": "",
+        "el_GR": "",
+        "en_US": "Prints Avalonia (UI) log messages in the console.",
+        "es_ES": "",
+        "fr_FR": "",
+        "he_IL": "",
+        "it_IT": "",
+        "ja_JP": "",
+        "ko_KR": "",
+        "no_NO": "",
+        "pl_PL": "",
+        "pt_BR": "",
+        "ru_RU": "",
+        "sv_SE": "",
+        "th_TH": "",
+        "tr_TR": "",
+        "uk_UA": "",
+        "zh_CN": "",
+        "zh_TW": ""
+      }
+    },
     {
       "ID": "OpenGlLogLevel",
       "Translations": {

+ 7 - 0
src/Ryujinx/UI/Helpers/LoggerAdapter.cs

@@ -1,6 +1,7 @@
 using Avalonia.Logging;
 using Avalonia.Utilities;
 using Gommon;
+using Ryujinx.Ava.Utilities.Configuration;
 using Ryujinx.Common.Logging;
 using System;
 using System.Text;
@@ -14,13 +15,19 @@ namespace Ryujinx.Ava.UI.Helpers
 
     internal class LoggerAdapter : ILogSink
     {
+        private static bool _avaloniaLogsEnabled = ConfigurationState.Instance.Logger.EnableAvaloniaLog; 
+        
         public static void Register()
         {
             AvaLogger.Sink = new LoggerAdapter();
+            ConfigurationState.Instance.Logger.EnableAvaloniaLog.Event 
+                += (_, e) => _avaloniaLogsEnabled = e.NewValue;
         }
 
         private static RyuLogger.Log? GetLog(AvaLogLevel level, string area)
         {
+            if (!_avaloniaLogsEnabled) return null;
+            
             return level switch
             {
                 AvaLogLevel.Verbose => RyuLogger.Debug,

+ 3 - 0
src/Ryujinx/UI/ViewModels/SettingsViewModel.cs

@@ -204,6 +204,7 @@ namespace Ryujinx.Ava.UI.ViewModels
         public bool EnableTrace { get; set; }
         public bool EnableGuest { get; set; }
         public bool EnableFsAccessLog { get; set; }
+        public bool EnableAvaloniaLog { get; set; }
         public bool EnableDebug { get; set; }
         public bool IsOpenAlEnabled { get; set; }
         public bool IsSoundIoEnabled { get; set; }
@@ -560,6 +561,7 @@ namespace Ryujinx.Ava.UI.ViewModels
             EnableGuest = config.Logger.EnableGuest;
             EnableDebug = config.Logger.EnableDebug;
             EnableFsAccessLog = config.Logger.EnableFsAccessLog;
+            EnableAvaloniaLog = config.Logger.EnableAvaloniaLog;
             FsGlobalAccessLogMode = config.System.FsGlobalAccessLogMode;
             OpenglDebugLevel = (int)config.Logger.GraphicsDebugLevel.Value;
 
@@ -679,6 +681,7 @@ namespace Ryujinx.Ava.UI.ViewModels
             config.Logger.EnableGuest.Value = EnableGuest;
             config.Logger.EnableDebug.Value = EnableDebug;
             config.Logger.EnableFsAccessLog.Value = EnableFsAccessLog;
+            config.Logger.EnableAvaloniaLog.Value = EnableAvaloniaLog;
             config.System.FsGlobalAccessLogMode.Value = FsGlobalAccessLogMode;
             config.Logger.GraphicsDebugLevel.Value = (GraphicsDebugLevel)OpenglDebugLevel;
 

+ 4 - 0
src/Ryujinx/UI/Views/Settings/SettingsLoggingView.axaml

@@ -74,6 +74,10 @@
                                   ToolTip.Tip="{ext:Locale DebugLogTooltip}">
                             <TextBlock Text="{ext:Locale SettingsTabLoggingEnableDebugLogs}" />
                         </CheckBox>
+                        <CheckBox IsChecked="{Binding EnableAvaloniaLog}"
+                                  ToolTip.Tip="{ext:Locale AvaloniaLogTooltip}">
+                            <TextBlock Text="{ext:Locale SettingsTabLoggingEnableAvaloniaLogs}" />
+                        </CheckBox>
                         <StackPanel Margin="0,10,0,0" Orientation="Horizontal" VerticalAlignment="Stretch">
                             <TextBlock VerticalAlignment="Center"
                                     ToolTip.Tip="{ext:Locale FSAccessLogModeTooltip}"

+ 6 - 1
src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs

@@ -15,7 +15,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
         /// <summary>
         /// The current version of the file format
         /// </summary>
-        public const int CurrentVersion = 63;
+        public const int CurrentVersion = 64;
 
         /// <summary>
         /// Version of the configuration file format
@@ -111,6 +111,11 @@ namespace Ryujinx.Ava.Utilities.Configuration
         /// Enables printing FS access log messages
         /// </summary>
         public bool LoggingEnableFsAccessLog { get; set; }
+        
+        /// <summary>
+        /// Enables log messages from Avalonia
+        /// </summary>
+        public bool LoggingEnableAvalonia { get; set; }
 
         /// <summary>
         /// Controls which log messages are written to the log targets

+ 2 - 1
src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs

@@ -430,7 +430,8 @@ namespace Ryujinx.Ava.Utilities.Configuration
                     }
                 }),
                 (62, static cff => cff.RainbowSpeed = 1f),
-                (63, static cff => cff.MatchSystemTime = false)
+                (63, static cff => cff.MatchSystemTime = false),
+                (64, static cff => cff.LoggingEnableAvalonia = false)
             );
     }
 }

+ 6 - 0
src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs

@@ -254,6 +254,11 @@ namespace Ryujinx.Ava.Utilities.Configuration
             /// Enables printing FS access log messages
             /// </summary>
             public ReactiveObject<bool> EnableFsAccessLog { get; private set; }
+            
+            /// <summary>
+            /// Enables log messages from Avalonia
+            /// </summary>
+            public ReactiveObject<bool> EnableAvaloniaLog { get; private set; }
 
             /// <summary>
             /// Controls which log messages are written to the log targets
@@ -281,6 +286,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
                 EnableTrace = new ReactiveObject<bool>();
                 EnableGuest = new ReactiveObject<bool>();
                 EnableFsAccessLog = new ReactiveObject<bool>();
+                EnableAvaloniaLog = new ReactiveObject<bool>();
                 FilteredClasses = new ReactiveObject<LogClass[]>();
                 EnableFileLog = new ReactiveObject<bool>();
                 EnableFileLog.LogChangesToValue(nameof(EnableFileLog));

+ 2 - 0
src/Ryujinx/Utilities/Configuration/ConfigurationState.cs

@@ -46,6 +46,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
                 LoggingEnableTrace = Logger.EnableTrace,
                 LoggingEnableGuest = Logger.EnableGuest,
                 LoggingEnableFsAccessLog = Logger.EnableFsAccessLog,
+                LoggingEnableAvalonia = Logger.EnableAvaloniaLog,
                 LoggingFilteredClasses = Logger.FilteredClasses,
                 LoggingGraphicsDebugLevel = Logger.GraphicsDebugLevel,
                 SystemLanguage = System.Language,
@@ -165,6 +166,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
             Logger.EnableTrace.Value = false;
             Logger.EnableGuest.Value = true;
             Logger.EnableFsAccessLog.Value = false;
+            Logger.EnableAvaloniaLog.Value = false;
             Logger.FilteredClasses.Value = [];
             Logger.GraphicsDebugLevel.Value = GraphicsDebugLevel.None;
             System.Language.Value = Language.AmericanEnglish;