private void WriteObjCore( Action <ConsoleColorsAgg> mainAction, ConsoleColorsAgg colors, string startText, string endText, ConsoleTextDelims mainDelims, ConsoleTextDelims outerDelims, bool printTimeStamp = false) { ConsoleColor textColor = colors.SecondaryForeColor; ConsoleColor delimsBackColor = colors.HighlightBackColor; PrintTimeStampIfReq(printTimeStamp); WriteWithDelims( outerDelims.StartDelim, null, startText, textColor, delimsBackColor, 2); WriteWithDelims( mainDelims.StartDelim, null, null, textColor, delimsBackColor, 1, 1); mainAction(colors); WriteWithDelims( mainDelims.EndDelim, null, null, textColor, delimsBackColor, 1, 1); WriteWithDelims( null, outerDelims.EndDelim, endText, textColor, delimsBackColor, 0, 2); }
private void WriteExceptionCore( Exception exc, ConsoleColorsAgg colors, int level = 0, bool printTimeStamp = false) { var mainColor = colors.MainForeColor; var highlightColor = colors.HighlightBackColor; PrintTimeStampIfReq(printTimeStamp); if (level > 0) { WriteWithDelims( "LEVEL", null, level.ToString(), mainColor, highlightColor, 0, 1); } WriteWithDelims( "MESSAGE", null, exc.Message, mainColor, highlightColor, 0, 1); WriteWithDelims( "TYPE", null, exc.Message, mainColor, highlightColor, 0, 1); WriteWithDelims( "STACKTRACE", null, exc.StackTrace, mainColor, highlightColor, 0, 1); if (exc.InnerException != null) { WriteWithDelims( "INNER EXCEPTION", null, level.ToString(), mainColor, highlightColor, 0, 1); WriteExceptionCore( exc.InnerException, colors, level + 1); } if (exc is AggregateException aggExc) { WriteWithDelims( "INNER EXCEPTIONS (AGGREGATE)", null, level.ToString(), mainColor, highlightColor, 0, 1); foreach (var innerExc in aggExc.InnerExceptions) { WriteWithDelims( "INNER EXCEPTION", null, level.ToString(), mainColor, highlightColor, 0, 1); WriteExceptionCore( innerExc, colors, level + 1); } } }