package org.eluder.logback.ext.kinesis.appender; import ch.qos.logback.classic.AsyncAppender; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Context; import ch.qos.logback.core.Layout; import ch.qos.logback.core.encoder.Encoder; import java.nio.charset.Charset; public class AsyncKinesisAppender extends AsyncAppender { private final KinesisAppender<ILoggingEvent> appender; public AsyncKinesisAppender() { this(new KinesisAppender<ILoggingEvent>()); } protected AsyncKinesisAppender(KinesisAppender<ILoggingEvent> appender) { appender.setAsyncParent(true); addAppender(appender); this.appender = appender; } public void setRegion(String region) { appender.setRegion(region); } public void setStream(String stream) { appender.setStream(stream); } public void setAccessKey(String accessKey) { appender.setAccessKey(accessKey); } public void setSecretKey(String secretKey) { appender.setSecretKey(secretKey); } public void setMaxPayloadSize(int maxPayloadSize) { appender.setMaxPayloadSize(maxPayloadSize); } public void setThreadPoolSize(int threadPoolSize) { appender.setThreadPoolSize(threadPoolSize); } @Override public final void setMaxFlushTime(int maxFlushTime) { appender.setMaxFlushTime(maxFlushTime); // add an extra 100 millis to wait for the internal event queue handling super.setMaxFlushTime(maxFlushTime + 100); } public void setCharset(Charset charset) { appender.setCharset(charset); } public void setEncoder(Encoder<ILoggingEvent> encoder) { appender.setEncoder(encoder); } public void setLayout(Layout<ILoggingEvent> layout) { appender.setLayout(layout); } public void setBinary(boolean binary) { appender.setBinary(binary); } @Override public void setName(String name) { appender.setName(name); super.setName(name); } @Override public void setContext(Context context) { appender.setContext(context); super.setContext(context); } @Override public void start() { appender.start(); super.start(); } }