AbstractLoggingProvider.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. namespace Quadarax.Foundation.Common.Log.Providers
  3. {
  4. public abstract class AbstractLoggingProvider : ILoggingProvider
  5. {
  6. public bool Enabled { get; set; }
  7. public abstract void Log(SeverityEnum severity, int? code, string message, Exception e = null);
  8. protected virtual string GetMessageString(SeverityEnum severity, int? code, string message, Exception e = null)
  9. {
  10. if (e == null)
  11. if (code == null)
  12. return TranslateMessage(message);
  13. else
  14. return $"[{TranslateCode(code)}] {TranslateMessage(message)}";
  15. else
  16. if (code == null)
  17. return TranslateMessage(message);
  18. else
  19. return $"[{TranslateCode(code)}] {TranslateMessage(message)} : {TranslateException(e)}";
  20. }
  21. protected virtual string TranslateCode(int? code)
  22. {
  23. return code.HasValue ? code.ToString() : string.Empty;
  24. }
  25. protected virtual string TranslateMessage(string message)
  26. {
  27. return message;
  28. }
  29. protected virtual string TranslateSeverity(SeverityEnum severity)
  30. {
  31. return severity.ToString();
  32. }
  33. protected virtual string TranslateException(Exception e)
  34. {
  35. return e == null ? string.Empty : e.ToString();
  36. }
  37. }
  38. }