ConsoleLog.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using Quadarax.Foundation.Core.Console;
  3. namespace Quadarax.Foundation.Core.Logging
  4. {
  5. public class ConsoleLog : ILog
  6. {
  7. private readonly string _typeName;
  8. private readonly LogSeverityEnum[]? _excludeSeverities;
  9. private readonly ConsoleWriter _infoWriter = new ConsoleWriter(ConsoleColor.White);
  10. private readonly ConsoleWriter _debugWriter = new ConsoleWriter(ConsoleColor.Green);
  11. private readonly ConsoleWriter _warnWriter = new ConsoleWriter(ConsoleColor.Yellow);
  12. private readonly ConsoleWriter _errorWriter = new ConsoleWriter(ConsoleColor.Red);
  13. private ConsoleWriter _traceWriter = new ConsoleWriter(ConsoleColor.DarkGray);
  14. public ConsoleLog(Type owningType, LogSeverityEnum[]? excludedSeverities = null) : this(owningType.Name, excludedSeverities)
  15. {
  16. }
  17. public ConsoleLog(string owningTypeName, LogSeverityEnum[]? excludedSeverities = null)
  18. {
  19. _typeName = owningTypeName;
  20. _excludeSeverities = excludedSeverities;
  21. }
  22. public void Log(LogSeverityEnum severity, int code, string message)
  23. {
  24. Log(severity, $"Code:{code}, {message}");
  25. }
  26. public void Log(LogSeverityEnum severity, string message)
  27. {
  28. if (_excludeSeverities != null && Array.IndexOf(_excludeSeverities, severity) >= 0)
  29. return;
  30. var now = DateTime.Now;
  31. var thNum = System.Threading.Thread.CurrentThread.ManagedThreadId;
  32. var final = $"[{severity}:{now.ToLongTimeString()}:{thNum}]#{_typeName}: {message}";
  33. switch (severity)
  34. {
  35. case LogSeverityEnum.Info:
  36. _infoWriter.WriteLine(final);
  37. break;
  38. case LogSeverityEnum.Debug:
  39. _debugWriter.WriteLine(final);
  40. break;
  41. case LogSeverityEnum.Warn:
  42. _warnWriter.WriteLine(final);
  43. break;
  44. case LogSeverityEnum.Fatal:
  45. case LogSeverityEnum.Error:
  46. _errorWriter.WriteLine(final);
  47. break;
  48. }
  49. }
  50. public void Log(LogSeverityEnum severity, string message, Exception? exception)
  51. {
  52. Log(severity, $"{message}\n{exception}");
  53. }
  54. public void Log(LogSeverityEnum severity, int code, string message, Exception? exception)
  55. {
  56. Log(severity, string.Format("{2} - {0}\n{1}", message,exception, code));
  57. }
  58. }
  59. }