From a86b71899ec52c44ddc6c3018e8cc5e9d7ff4d62 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Thu, 27 Dec 2018 18:27:57 -0500 Subject: Add GPL modules --- MediaBrowser.Model/Logging/IConsoleLogger.cs | 7 ++ MediaBrowser.Model/Logging/ILogManager.cs | 56 ++++++++++++++++ MediaBrowser.Model/Logging/ILogger.cs | 78 ++++++++++++++++++++++ MediaBrowser.Model/Logging/LogHelper.cs | 97 ++++++++++++++++++++++++++++ MediaBrowser.Model/Logging/LogSeverity.cs | 30 +++++++++ MediaBrowser.Model/Logging/NullLogger.cs | 44 +++++++++++++ 6 files changed, 312 insertions(+) create mode 100644 MediaBrowser.Model/Logging/IConsoleLogger.cs create mode 100644 MediaBrowser.Model/Logging/ILogManager.cs create mode 100644 MediaBrowser.Model/Logging/ILogger.cs create mode 100644 MediaBrowser.Model/Logging/LogHelper.cs create mode 100644 MediaBrowser.Model/Logging/LogSeverity.cs create mode 100644 MediaBrowser.Model/Logging/NullLogger.cs (limited to 'MediaBrowser.Model/Logging') diff --git a/MediaBrowser.Model/Logging/IConsoleLogger.cs b/MediaBrowser.Model/Logging/IConsoleLogger.cs new file mode 100644 index 0000000000..a8c282d65c --- /dev/null +++ b/MediaBrowser.Model/Logging/IConsoleLogger.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Model.Logging +{ + public interface IConsoleLogger + { + void WriteLine(string message); + } +} diff --git a/MediaBrowser.Model/Logging/ILogManager.cs b/MediaBrowser.Model/Logging/ILogManager.cs new file mode 100644 index 0000000000..e6a10cf181 --- /dev/null +++ b/MediaBrowser.Model/Logging/ILogManager.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Model.Logging +{ + /// + /// Interface ILogManager + /// + public interface ILogManager + { + /// + /// Gets or sets the log level. + /// + /// The log level. + LogSeverity LogSeverity { get; set; } + + /// + /// Gets or sets the exception message prefix. + /// + /// The exception message prefix. + string ExceptionMessagePrefix { get; set; } + + /// + /// Gets the logger. + /// + /// The name. + /// ILogger. + ILogger GetLogger(string name); + + /// + /// Reloads the logger. + /// + Task ReloadLogger(LogSeverity severity, CancellationToken cancellationToken); + + /// + /// Occurs when [logger loaded]. + /// + event EventHandler LoggerLoaded; + + /// + /// Flushes this instance. + /// + void Flush(); + + /// + /// Adds the console output. + /// + void AddConsoleOutput(); + + /// + /// Removes the console output. + /// + void RemoveConsoleOutput(); + } +} diff --git a/MediaBrowser.Model/Logging/ILogger.cs b/MediaBrowser.Model/Logging/ILogger.cs new file mode 100644 index 0000000000..be9d6fc503 --- /dev/null +++ b/MediaBrowser.Model/Logging/ILogger.cs @@ -0,0 +1,78 @@ +using System; +using System.Text; + +namespace MediaBrowser.Model.Logging +{ + /// + /// Interface ILogger + /// + public interface ILogger + { + /// + /// Infoes the specified message. + /// + /// The message. + /// The param list. + void Info(string message, params object[] paramList); + + /// + /// Errors the specified message. + /// + /// The message. + /// The param list. + void Error(string message, params object[] paramList); + + /// + /// Warns the specified message. + /// + /// The message. + /// The param list. + void Warn(string message, params object[] paramList); + + /// + /// Debugs the specified message. + /// + /// The message. + /// The param list. + void Debug(string message, params object[] paramList); + + /// + /// Fatals the specified message. + /// + /// The message. + /// The param list. + void Fatal(string message, params object[] paramList); + + /// + /// Fatals the exception. + /// + /// The message. + /// The exception. + /// The param list. + void FatalException(string message, Exception exception, params object[] paramList); + + /// + /// Logs the exception. + /// + /// The message. + /// The exception. + /// The param list. + void ErrorException(string message, Exception exception, params object[] paramList); + + /// + /// Logs the multiline. + /// + /// The message. + /// The severity. + /// Content of the additional. + void LogMultiline(string message, LogSeverity severity, StringBuilder additionalContent); + + /// + /// Logs the specified severity. + /// + /// The severity. + /// The message. + /// The parameter list. + void Log(LogSeverity severity, string message, params object[] paramList); + } +} diff --git a/MediaBrowser.Model/Logging/LogHelper.cs b/MediaBrowser.Model/Logging/LogHelper.cs new file mode 100644 index 0000000000..cf1c021862 --- /dev/null +++ b/MediaBrowser.Model/Logging/LogHelper.cs @@ -0,0 +1,97 @@ +using System; +using System.Text; + +namespace MediaBrowser.Model.Logging +{ + /// + /// Class LogHelper + /// + public static class LogHelper + { + /// + /// Gets the log message. + /// + /// The exception. + /// StringBuilder. + public static StringBuilder GetLogMessage(Exception exception) + { + if (exception == null) + { + throw new ArgumentNullException("exception"); + } + + var messageText = new StringBuilder(); + + messageText.AppendLine(exception.ToString()); + + messageText.AppendLine(exception.GetType().FullName); + + LogExceptionData(messageText, exception); + + messageText.AppendLine(exception.StackTrace ?? "No Stack Trace Available"); + + // Log the InnerExceptions, if any + AppendInnerExceptions(messageText, exception); + + messageText.AppendLine(string.Empty); + + return messageText; + } + + /// + /// Appends the inner exceptions. + /// + /// The message text. + /// The e. + private static void AppendInnerExceptions(StringBuilder messageText, Exception e) + { + var aggregate = e as AggregateException; + + if (aggregate != null && aggregate.InnerExceptions != null) + { + foreach (var ex in aggregate.InnerExceptions) + { + AppendInnerException(messageText, ex); + AppendInnerExceptions(messageText, ex); + } + } + + else if (e.InnerException != null) + { + AppendInnerException(messageText, e.InnerException); + AppendInnerExceptions(messageText, e.InnerException); + } + } + + /// + /// Appends the inner exception. + /// + /// The message text. + /// The e. + private static void AppendInnerException(StringBuilder messageText, Exception e) + { + messageText.AppendLine("InnerException: " + e.GetType().FullName); + messageText.AppendLine(e.ToString()); + + LogExceptionData(messageText, e); + + if (e.StackTrace != null) + { + messageText.AppendLine(e.StackTrace); + } + } + + /// + /// Logs the exception data. + /// + /// The message text. + /// The e. + private static void LogExceptionData(StringBuilder messageText, Exception e) + { + foreach (var key in e.Data.Keys) + { + messageText.AppendLine(key + ": " + e.Data[key]); + } + } + } +} diff --git a/MediaBrowser.Model/Logging/LogSeverity.cs b/MediaBrowser.Model/Logging/LogSeverity.cs new file mode 100644 index 0000000000..ae04872894 --- /dev/null +++ b/MediaBrowser.Model/Logging/LogSeverity.cs @@ -0,0 +1,30 @@ + +namespace MediaBrowser.Model.Logging +{ + /// + /// Enum LogSeverity + /// + public enum LogSeverity + { + /// + /// The info + /// + Info, + /// + /// The debug + /// + Debug, + /// + /// The warn + /// + Warn, + /// + /// The error + /// + Error, + /// + /// The fatal + /// + Fatal + } +} diff --git a/MediaBrowser.Model/Logging/NullLogger.cs b/MediaBrowser.Model/Logging/NullLogger.cs new file mode 100644 index 0000000000..d211d2567d --- /dev/null +++ b/MediaBrowser.Model/Logging/NullLogger.cs @@ -0,0 +1,44 @@ +using System; +using System.Text; + +namespace MediaBrowser.Model.Logging +{ + public class NullLogger : ILogger + { + public void Info(string message, params object[] paramList) + { + } + + public void Error(string message, params object[] paramList) + { + } + + public void Warn(string message, params object[] paramList) + { + } + + public void Debug(string message, params object[] paramList) + { + } + + public void Fatal(string message, params object[] paramList) + { + } + + public void FatalException(string message, Exception exception, params object[] paramList) + { + } + + public void Log(LogSeverity severity, string message, params object[] paramList) + { + } + + public void ErrorException(string message, Exception exception, params object[] paramList) + { + } + + public void LogMultiline(string message, LogSeverity severity, StringBuilder additionalContent) + { + } + } +} -- cgit v1.2.3