docs: private void processLoggingEvents(List<LoggingEvent> loggingEvents) {
          // Lazy initialization of the appender. This is needed because the
          // original appenders configuration may be available only after the
          // complete
          // log4j initialization.
          while (appenders.getAllAppenders() == null) {
              if ((batcher == null) || (batcher.isPaused())) {
                  try {
                      Thread.sleep(SLEEP_TIME_MS);
                  } catch (InterruptedException ignore) {
  
                  }
                  continue;
              }
  
              org.apache.log4j.Logger asyncLogger = LoggerCache.getInstance()
                      .getOrCreateLogger(LOGGER_ASYNC_APPENDER);
              Appender originalAppender = asyncLogger
                      .getAppender(originalAppenderName);
              if (originalAppender == null) {
                  try {
                      Thread.sleep(SLEEP_TIME_MS);
                  } catch (InterruptedException ignore) {
  
                  }
                  continue;
              }
              appenders.addAppender(originalAppender);
          }
          // First take the overflown summary events and put it back in the queue
          for (Iterator<Entry<String, LogSummary>> iter = logSummaryMap
                  .entrySet().iterator(); iter.hasNext();) {
              Entry<String, LogSummary> mapEntry = (Entry<String, LogSummary>) iter
                      .next();
              // If the space is not available, then exit immediately
              if (batcher.isSpaceAvailable()) {
                  LogSummary logSummary = mapEntry.getValue();
                  LoggingEvent event = logSummary.createEvent();
                  // Put the event in the queue and remove the event from the summary
                  if (batcher.process(event)) {
                      iter.remove();
                  } else {
                      break;
                  }
              } else {
                  break;
              }
  
          }
          // Process the events from the queue and call the underlying
          // appender
          for (LoggingEvent event : loggingEvents) {
              appenders.appendLoopOnAppenders(event);
  
          }
  
      }