ConsoleLogTarget.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System;
  2. using System.Collections.Concurrent;
  3. namespace Ryujinx.Common.Logging
  4. {
  5. public class ConsoleLogTarget : ILogTarget
  6. {
  7. private readonly ILogFormatter _formatter;
  8. private readonly string _name;
  9. string ILogTarget.Name { get => _name; }
  10. private static ConsoleColor GetLogColor(LogLevel level) => level switch {
  11. LogLevel.Info => ConsoleColor.White,
  12. LogLevel.Warning => ConsoleColor.Yellow,
  13. LogLevel.Error => ConsoleColor.Red,
  14. LogLevel.Stub => ConsoleColor.DarkGray,
  15. LogLevel.Notice => ConsoleColor.Cyan,
  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. }