/// <summary> /// Logs the aggregate exception. /// </summary> /// <param name="log">The logger.</param> /// <param name="message">The message.</param> /// <param name="exception">The exception.</param> public static void LogAggregateException(this ILog log, string message, AggregateException exception) { var sb = new StringBuilder(); sb.AppendLine(message); foreach (var e in exception.InnerExceptions) { sb.AppendLine("#1: " + e.Message); sb.AppendLine(e.StackTrace); } log.Error(sb.ToString()); }
/// <summary> /// Log a message at Error level /// </summary> /// <param name="logger">extended logger</param> /// <param name="message">message function for deferred evaluation</param> /// <param name="line">compiler injected line number</param> /// <param name="member">compiler injected class member</param> /// <param name="file">compiler injected file</param> public static void Error([NotNull] this ILogger2 logger, Func <string> message, [CallerLineNumber] int?line = null, [CallerMemberName] string?member = null, [CallerFilePath] string?file = null) { logger.Error(null, message, line, member, file); }
/// <summary> /// Log a message at Error level /// </summary> /// <param name="logger">extended logger</param> /// <param name="message">message</param> /// <param name="line">compiler injected line number</param> /// <param name="member">compiler injected class member</param> /// <param name="file">compiler injected file</param> public static void Error([NotNull] this ILogger2 logger, [Localizable(false)] string message, [CallerLineNumber] int?line = null, [CallerMemberName] string?member = null, [CallerFilePath] string?file = null) { logger.Error(null, () => message, line, member, file); }