From 8b7effd6ff1694688e93d03a48c5dcddb4efe4f0 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Tue, 18 Sep 2012 15:33:57 -0400 Subject: Moved discovery of loggers and weather providers to MEF. Also added support for third-party image processors, also discovered through MEF. --- MediaBrowser.Common/Logging/Logger.cs | 66 +++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 6 deletions(-) (limited to 'MediaBrowser.Common/Logging/Logger.cs') diff --git a/MediaBrowser.Common/Logging/Logger.cs b/MediaBrowser.Common/Logging/Logger.cs index e66c1d844..9ac02fe3e 100644 --- a/MediaBrowser.Common/Logging/Logger.cs +++ b/MediaBrowser.Common/Logging/Logger.cs @@ -1,24 +1,28 @@ using System; +using System.Diagnostics; +using System.Text; +using System.Threading; +using MediaBrowser.Common.Kernel; namespace MediaBrowser.Common.Logging { public static class Logger { - public static BaseLogger LoggerInstance { get; set; } + internal static IKernel Kernel { get; set; } public static void LogInfo(string message, params object[] paramList) { - LoggerInstance.LogInfo(message, paramList); + LogEntry(message, LogSeverity.Info, paramList); } public static void LogDebugInfo(string message, params object[] paramList) { - LoggerInstance.LogDebugInfo(message, paramList); + LogEntry(message, LogSeverity.Debug, paramList); } public static void LogError(string message, params object[] paramList) { - LoggerInstance.LogError(message, paramList); + LogEntry(message, LogSeverity.Error, paramList); } public static void LogException(Exception ex, params object[] paramList) @@ -28,12 +32,62 @@ namespace MediaBrowser.Common.Logging public static void LogException(string message, Exception ex, params object[] paramList) { - LoggerInstance.LogException(message, ex, paramList); + var builder = new StringBuilder(); + + if (ex != null) + { + builder.AppendFormat("Exception. Type={0} Msg={1} StackTrace={3}{2}", + ex.GetType().FullName, + ex.Message, + ex.StackTrace, + Environment.NewLine); + } + + message = FormatMessage(message, paramList); + + LogError(string.Format("{0} ( {1} )", message, builder)); } public static void LogWarning(string message, params object[] paramList) { - LoggerInstance.LogWarning(message, paramList); + LogEntry(message, LogSeverity.Warning, paramList); + } + + private static void LogEntry(string message, LogSeverity severity, params object[] paramList) + { + message = FormatMessage(message, paramList); + + Thread currentThread = Thread.CurrentThread; + + var row = new LogRow + { + Severity = severity, + Message = message, + ThreadId = currentThread.ManagedThreadId, + ThreadName = currentThread.Name, + Time = DateTime.Now + }; + + if (Kernel.Loggers != null) + { + foreach (var logger in Kernel.Loggers) + { + logger.LogEntry(row); + } + } + } + + private static string FormatMessage(string message, params object[] paramList) + { + if (paramList != null) + { + for (int i = 0; i < paramList.Length; i++) + { + message = message.Replace("{" + i + "}", paramList[i].ToString()); + } + } + + return message; } } } -- cgit v1.2.3