BaseLogger.cs 2.6 KB

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