mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
 | 
						|
namespace MediaBrowser.Common.Implementations.Logging
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Class LogHelper
 | 
						|
    /// </summary>
 | 
						|
    public static class LogHelper
 | 
						|
    {
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the log message.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="exception">The exception.</param>
 | 
						|
        /// <returns>StringBuilder.</returns>
 | 
						|
        public static StringBuilder GetLogMessage(Exception exception)
 | 
						|
        {
 | 
						|
            var messageText = new StringBuilder();
 | 
						|
 | 
						|
            messageText.AppendLine(exception.Message);
 | 
						|
 | 
						|
            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;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Appends the inner exceptions.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="messageText">The message text.</param>
 | 
						|
        /// <param name="e">The e.</param>
 | 
						|
        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);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            else if (e.InnerException != null)
 | 
						|
            {
 | 
						|
                AppendInnerException(messageText, e.InnerException);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Appends the inner exception.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="messageText">The message text.</param>
 | 
						|
        /// <param name="e">The e.</param>
 | 
						|
        private static void AppendInnerException(StringBuilder messageText, Exception e)
 | 
						|
        {
 | 
						|
            messageText.AppendLine("InnerException: " + e.GetType().FullName);
 | 
						|
            messageText.AppendLine(e.Message);
 | 
						|
 | 
						|
            LogExceptionData(messageText, e);
 | 
						|
 | 
						|
            if (e.StackTrace != null)
 | 
						|
            {
 | 
						|
                messageText.AppendLine(e.StackTrace);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Logs the exception data.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="messageText">The message text.</param>
 | 
						|
        /// <param name="e">The e.</param>
 | 
						|
        private static void LogExceptionData(StringBuilder messageText, Exception e)
 | 
						|
        {
 | 
						|
            foreach (var key in e.Data.Keys)
 | 
						|
            {
 | 
						|
                messageText.AppendLine(key + ": " + e.Data[key]);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |