aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs')
-rw-r--r--src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs b/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
new file mode 100644
index 00000000..7b77c4f2
--- /dev/null
+++ b/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
@@ -0,0 +1,41 @@
+using System;
+
+namespace Ryujinx.Common.Logging
+{
+ public class ConsoleLogTarget : ILogTarget
+ {
+ private readonly ILogFormatter _formatter;
+
+ private readonly string _name;
+
+ string ILogTarget.Name { get => _name; }
+
+ 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,
+ LogLevel.Trace => ConsoleColor.DarkCyan,
+ _ => ConsoleColor.Gray,
+ };
+
+ public ConsoleLogTarget(string name)
+ {
+ _formatter = new DefaultLogFormatter();
+ _name = name;
+ }
+
+ public void Log(object sender, LogEventArgs args)
+ {
+ Console.ForegroundColor = GetLogColor(args.Level);
+ Console.WriteLine(_formatter.Format(args));
+ Console.ResetColor();
+ }
+
+ public void Dispose()
+ {
+ Console.ResetColor();
+ }
+ }
+}