BaseLogger.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Diagnostics;
  3. using System.Text;
  4. using System.Threading;
  5. namespace MediaBrowser.Common.Logging
  6. {
  7. public abstract class BaseLogger
  8. {
  9. public LogSeverity LogSeverity { get; set; }
  10. public void LogInfo(string message, params object[] paramList)
  11. {
  12. LogEntry(message, LogSeverity.Info, paramList);
  13. }
  14. public void LogDebugInfo(string message, params object[] paramList)
  15. {
  16. LogEntry(message, LogSeverity.Debug, paramList);
  17. }
  18. public void LogError(string message, params object[] paramList)
  19. {
  20. LogEntry(message, LogSeverity.Error, paramList);
  21. }
  22. public void LogException(string message, Exception exception, params object[] paramList)
  23. {
  24. StringBuilder builder = new StringBuilder();
  25. if (exception != null)
  26. {
  27. var trace = new StackTrace(exception, true);
  28. builder.AppendFormat("Exception. Type={0} Msg={1} Src={2} Method={5} Line={6} Col={7}{4}StackTrace={4}{3}",
  29. exception.GetType().FullName,
  30. exception.Message,
  31. exception.Source,
  32. exception.StackTrace,
  33. Environment.NewLine,
  34. trace.GetFrame(0).GetMethod().Name,
  35. trace.GetFrame(0).GetFileLineNumber(),
  36. trace.GetFrame(0).GetFileColumnNumber());
  37. }
  38. StackFrame frame = new StackFrame(1);
  39. message = string.Format(message, paramList);
  40. LogError(string.Format("{0} ( {1} )", message, builder));
  41. }
  42. public void LogWarning(string message, params object[] paramList)
  43. {
  44. LogEntry(message, LogSeverity.Warning, paramList);
  45. }
  46. private void LogEntry(string message, LogSeverity severity, params object[] paramList)
  47. {
  48. if (severity < LogSeverity) return;
  49. message = string.Format(message, paramList);
  50. Thread currentThread = Thread.CurrentThread;
  51. LogRow row = new LogRow()
  52. {
  53. Severity = severity,
  54. Message = message,
  55. Category = string.Empty,
  56. ThreadId = currentThread.ManagedThreadId,
  57. ThreadName = currentThread.Name,
  58. Time = DateTime.Now
  59. };
  60. LogEntry(row);
  61. }
  62. protected abstract void LogEntry(LogRow row);
  63. }
  64. }