ConsoleLogTarget.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System;
  2. namespace Ryujinx.Common.Logging
  3. {
  4. public class ConsoleLogTarget : ILogTarget
  5. {
  6. private readonly ILogFormatter _formatter;
  7. private readonly string _name;
  8. string ILogTarget.Name { get => _name; }
  9. private static ConsoleColor GetLogColor(LogLevel level) => level switch {
  10. LogLevel.Info => ConsoleColor.White,
  11. LogLevel.Warning => ConsoleColor.Yellow,
  12. LogLevel.Error => ConsoleColor.Red,
  13. LogLevel.Stub => ConsoleColor.DarkGray,
  14. LogLevel.Notice => ConsoleColor.Cyan,
  15. LogLevel.Trace => ConsoleColor.DarkCyan,
  16. _ => ConsoleColor.Gray,
  17. };
  18. public ConsoleLogTarget(string name)
  19. {
  20. _formatter = new DefaultLogFormatter();
  21. _name = name;
  22. }
  23. public void Log(object sender, LogEventArgs args)
  24. {
  25. Console.ForegroundColor = GetLogColor(args.Level);
  26. Console.WriteLine(_formatter.Format(args));
  27. Console.ResetColor();
  28. }
  29. public void Dispose()
  30. {
  31. Console.ResetColor();
  32. }
  33. }
  34. }