/**
* This method is called whenever a logging happens via logger.log(..) API
* calls. Implementation for this appender will take in log events instantly
* as long as the buffer is not full (as per user configuration). This call
* will block if internal buffer is full until internal threads create some
* space by publishing some of the records.
*
* If there is any error in parsing logevents, those logevents would be
* dropped.
*/
@Override
public void append(LoggingEvent logEvent) {
if (initializationFailed) {
error("Check the configuration and whether the configured stream " + streamName
+ " exists and is active. Failed to initialize kinesis log4j appender: " + name);
return;
}
try {
String message = layout.format(logEvent);
ByteBuffer data = ByteBuffer.wrap(message.getBytes(encoding));
kinesisClient.putRecordAsync(new PutRecordRequest().withPartitionKey(UUID.randomUUID().toString())
.withStreamName(streamName).withData(data), asyncCallHander);
} catch (Exception e) {
LOGGER.error("Failed to schedule log entry for publishing into Kinesis stream: " + streamName);
errorHandler.error("Failed to schedule log entry for publishing into Kinesis stream: " + streamName, e,
ErrorCode.WRITE_FAILURE, logEvent);
}
}
KinesisAppender.java 文件源码
java
阅读 21
收藏 0
点赞 0
评论 0
项目:kinesis-log4j-appender
作者:
评论列表
文章目录