ConsoleLog.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Ryujinx.HLE.Logging;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Threading;
  5. namespace Ryujinx
  6. {
  7. static class ConsoleLog
  8. {
  9. private static Dictionary<LogLevel, ConsoleColor> LogColors;
  10. private static object ConsoleLock;
  11. static ConsoleLog()
  12. {
  13. LogColors = new Dictionary<LogLevel, ConsoleColor>()
  14. {
  15. { LogLevel.Stub, ConsoleColor.DarkGray },
  16. { LogLevel.Info, ConsoleColor.White },
  17. { LogLevel.Warning, ConsoleColor.Yellow },
  18. { LogLevel.Error, ConsoleColor.Red }
  19. };
  20. ConsoleLock = new object();
  21. }
  22. public static void PrintLog(object sender, LogEventArgs e)
  23. {
  24. string FormattedTime = e.Time.ToString(@"hh\:mm\:ss\.fff");
  25. string CurrentThread = Thread.CurrentThread.ManagedThreadId.ToString("d4");
  26. string Message = FormattedTime + " | " + CurrentThread + " " + e.Message;
  27. if (LogColors.TryGetValue(e.Level, out ConsoleColor Color))
  28. {
  29. lock (ConsoleLock)
  30. {
  31. Console.ForegroundColor = Color;
  32. Console.WriteLine(Message);
  33. Console.ResetColor();
  34. }
  35. }
  36. else
  37. {
  38. Console.WriteLine(Message);
  39. }
  40. }
  41. }
  42. }