On 2018-01-09 14:46, Apache <ralph.go...@dslextreme.com> wrote:
> The Logging api only allows you to log a single event at a time so it 
> doesn?019t make sense for an appender to have a method that accepts multiple 
> events since it can?019t happen. That said, appenders can queue the events 
> and send them downstream in batches. I believe some of the appenders do that 
> now.

>
> Is there some use case I am not aware of where this method could be called?

As I wrote, the use case would be performance, assuming that the
Appender can process a bunch of messages just as quickly as a single
message. (Think of the JMSAppender using a BatchMessage, rather than a
TextMessage, or ObjectMessage.)

My trivial guess would be, that the AsyncAppender somewhere has code
like the following:

  private void pushToSyncAppender(LogEvent[] events) {
    final Appender appender = this.syncAppender;
    for (LogEvent ev : events) {
      appender.append(ev);
    }
  }

which could be changed to

  private void pushToSyncAppender(LogEvent[] events) {
    final Appender appender = this.syncAppender;
    if (appender instanceof BatchableAppender) {
      ((BatchableAppender) appender).append(events);
    } else {
      for (LogEvent ev : events) {
        appender.append(ev);
      }
    }
  }

I have to admit, though, that I don't detect right now, where the
AsyncAppender is actually pushing to the synchronous appender.

Jochen

Reply via email to