code: private void prepareLogger(String verboseLog) {
          final StaticLoggerBinder loggerBinder = StaticLoggerBinder.getSingleton();
          final LoggerContext context = (LoggerContext) loggerBinder.getLoggerFactory();
  
          final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
          encoder.setPattern("%d %C:%L%n%-5level - %msg%n");
          encoder.setContext(context);
          encoder.start();
          final FileAppender<ILoggingEvent> fa = new FileAppender<>();
          fa.setAppend(true);
          fa.setEncoder(encoder);
          fa.setContext(context);
          fa.setFile(verboseLog);
          final File f = new File(verboseLog);
          String name = f.getName();
          final int i = name.lastIndexOf('.');
          if (i > 1) {
              name = name.substring(0, i);
          }
          fa.setName(name);
          fa.start();
          final ch.qos.logback.classic.Logger rootLogger = context.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
          rootLogger.setLevel(Level.DEBUG);
          final ThresholdFilter filter = new ThresholdFilter();
          filter.setLevel(LogLevel.INFO.getValue());
          filter.setContext(context);
          filter.start();
          rootLogger.iteratorForAppenders().forEachRemaining(action -> {
              action.addFilter(filter);
          });
          rootLogger.addAppender(fa);
      }
docs: Creates a file appender and adds it to logback.
  
  @param verboseLog the path to the verbose log file