code: public static <T extends Throwable> void printHistory(final T th, final Printer printer) {
          if (beQuiet) {
              return;
          }
          printHistory(th, printer, "", "");
  
          // Print normal stacktrace in debug mode for all errors.
          if (printer.isDebugEnabled()) {
              printer.print(SEPARATOR);
              printer.print(getContext(th), th);
          }
          printer.print(SEPARATOR);
      }
docs: Prints a human readable Exception cause chain of the given Exception. Builds a human readable Exception Print Exception messages without StackTrace in non debug mode. Method prints recursive
  all messages of the given exception stack to get a history overview of the causes. In verbose mode (app -v) the stacktrace is printed in the end of history.
  
  @param <T> Exception type
  @param printer the message printer to use.
  @param th exception stack to print.