Logger.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using System;
  2. using System.Diagnostics;
  3. using System.Text;
  4. using System.Threading;
  5. using MediaBrowser.Common.Kernel;
  6. namespace MediaBrowser.Common.Logging
  7. {
  8. public static class Logger
  9. {
  10. internal static IKernel Kernel { get; set; }
  11. public static void LogInfo(string message, params object[] paramList)
  12. {
  13. LogEntry(message, LogSeverity.Info, paramList);
  14. }
  15. public static void LogDebugInfo(string message, params object[] paramList)
  16. {
  17. LogEntry(message, LogSeverity.Debug, paramList);
  18. }
  19. public static void LogError(string message, params object[] paramList)
  20. {
  21. LogEntry(message, LogSeverity.Error, paramList);
  22. }
  23. public static void LogException(Exception ex, params object[] paramList)
  24. {
  25. LogException(string.Empty, ex, paramList);
  26. }
  27. public static void LogException(string message, Exception ex, params object[] paramList)
  28. {
  29. var builder = new StringBuilder();
  30. if (ex != null)
  31. {
  32. builder.AppendFormat("Exception. Type={0} Msg={1} StackTrace={3}{2}",
  33. ex.GetType().FullName,
  34. ex.Message,
  35. ex.StackTrace,
  36. Environment.NewLine);
  37. }
  38. message = FormatMessage(message, paramList);
  39. LogError(string.Format("{0} ( {1} )", message, builder));
  40. }
  41. public static void LogWarning(string message, params object[] paramList)
  42. {
  43. LogEntry(message, LogSeverity.Warning, paramList);
  44. }
  45. private static void LogEntry(string message, LogSeverity severity, params object[] paramList)
  46. {
  47. message = FormatMessage(message, paramList);
  48. Thread currentThread = Thread.CurrentThread;
  49. var row = new LogRow
  50. {
  51. Severity = severity,
  52. Message = message,
  53. ThreadId = currentThread.ManagedThreadId,
  54. ThreadName = currentThread.Name,
  55. Time = DateTime.Now
  56. };
  57. if (Kernel.Loggers != null)
  58. {
  59. foreach (var logger in Kernel.Loggers)
  60. {
  61. logger.LogEntry(row);
  62. }
  63. }
  64. }
  65. private static string FormatMessage(string message, params object[] paramList)
  66. {
  67. if (paramList != null)
  68. {
  69. for (int i = 0; i < paramList.Length; i++)
  70. {
  71. message = message.Replace("{" + i + "}", paramList[i].ToString());
  72. }
  73. }
  74. return message;
  75. }
  76. }
  77. }