From a33dc2f4919f7fdc8ea9db41c4c70c38cedfd3df Mon Sep 17 00:00:00 2001 From: mageven <62494521+mageven@users.noreply.github.com> Date: Tue, 4 Aug 2020 05:02:53 +0530 Subject: Improved Logger (#1292) * Logger class changes only Now compile-time checking is possible with the help of Nullable Value types. * Misc formatting * Manual optimizations PrintGuestLog PrintGuestStackTrace Surfaceflinger DequeueBuffer * Reduce SendVibrationXX log level to Debug * Add Notice log level This level is always enabled and used to print system info, etc... Also, rewrite LogColor to switch expression as colors are static * Unify unhandled exception event handlers * Print enabled LogLevels during init * Re-add App Exit disposes in proper order nit: switch case spacing * Revert PrintGuestStackTrace to Info logs due to #1407 PrintGuestStackTrace is now called in some critical error handlers so revert to old behavior as KThread isn't part of Guest. * Batch replace Logger statements --- Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs | 34 +++++++--------------- 1 file changed, 11 insertions(+), 23 deletions(-) (limited to 'Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs') diff --git a/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs b/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs index ff5c6f5a..15f0e153 100644 --- a/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs +++ b/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs @@ -5,23 +5,20 @@ namespace Ryujinx.Common.Logging { public class ConsoleLogTarget : ILogTarget { - private static readonly ConcurrentDictionary _logColors; - private readonly ILogFormatter _formatter; private readonly string _name; string ILogTarget.Name { get => _name; } - static ConsoleLogTarget() - { - _logColors = new ConcurrentDictionary { - [ LogLevel.Stub ] = ConsoleColor.DarkGray, - [ LogLevel.Info ] = ConsoleColor.White, - [ LogLevel.Warning ] = ConsoleColor.Yellow, - [ LogLevel.Error ] = ConsoleColor.Red - }; - } + private static ConsoleColor GetLogColor(LogLevel level) => level switch { + LogLevel.Info => ConsoleColor.White, + LogLevel.Warning => ConsoleColor.Yellow, + LogLevel.Error => ConsoleColor.Red, + LogLevel.Stub => ConsoleColor.DarkGray, + LogLevel.Notice => ConsoleColor.Cyan, + _ => ConsoleColor.Gray, + }; public ConsoleLogTarget(string name) { @@ -31,18 +28,9 @@ namespace Ryujinx.Common.Logging public void Log(object sender, LogEventArgs args) { - if (_logColors.TryGetValue(args.Level, out ConsoleColor color)) - { - Console.ForegroundColor = color; - - Console.WriteLine(_formatter.Format(args)); - - Console.ResetColor(); - } - else - { - Console.WriteLine(_formatter.Format(args)); - } + Console.ForegroundColor = GetLogColor(args.Level); + Console.WriteLine(_formatter.Format(args)); + Console.ResetColor(); } public void Dispose() -- cgit v1.2.3