diff --git a/ICD.Common.Utils/Services/Logging/ILoggerService.cs b/ICD.Common.Utils/Services/Logging/ILoggerService.cs
index 3a0f1c1..b7f1a53 100644
--- a/ICD.Common.Utils/Services/Logging/ILoggerService.cs
+++ b/ICD.Common.Utils/Services/Logging/ILoggerService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Text;
using ICD.Common.Properties;
namespace ICD.Common.Utils.Services.Logging
@@ -94,19 +95,50 @@ namespace ICD.Common.Utils.Services.Logging
#if STANDARD
if (e is AggregateException)
{
- AggregateException aggregate = e as AggregateException;
- // We want the stack trace from the aggregate exception but the type and message from the inner.
- foreach (Exception inner in aggregate.InnerExceptions)
- extends.AddEntry(severity, string.Format("{0}: {1}{2}{3}{2}{4}", inner.GetType().Name, message,
- IcdEnvironment.NewLine, inner.Message, e.StackTrace));
+ extends.AddEntry(severity, e as AggregateException, message);
return;
}
#endif
-
extends.AddEntry(severity, string.Format("{0}: {1}{2}{3}{2}{4}", e.GetType().Name, message,
IcdEnvironment.NewLine, e.Message, e.StackTrace));
}
+#if STANDARD
+ ///
+ /// Logs an aggregate exception as a formatted list of inner exceptions.
+ ///
+ ///
+ ///
+ ///
+ ///
+ private static void AddEntry(this ILoggerService extends, eSeverity severity, AggregateException e, string message)
+ {
+ if (extends == null)
+ throw new ArgumentNullException("extends");
+
+ if (e == null)
+ throw new ArgumentNullException("e");
+
+ StringBuilder builder = new StringBuilder();
+
+ builder.AppendFormat("{0}: {1}", e.GetType().Name, message);
+
+ builder.Append(IcdEnvironment.NewLine);
+ builder.Append('[');
+
+ foreach (Exception inner in e.Flatten().InnerExceptions)
+ builder.AppendFormat("{0}\t{1}: {2}", IcdEnvironment.NewLine, inner.GetType().Name, inner.Message);
+
+ builder.Append(IcdEnvironment.NewLine);
+ builder.Append(']');
+
+ builder.Append(IcdEnvironment.NewLine);
+ builder.Append(e.StackTrace);
+
+ extends.AddEntry(severity, builder.ToString());
+ }
+#endif
+
[PublicAPI]
public static void AddEntry(this ILoggerService extends, eSeverity severity, Exception e, string message,
params object[] args)