code: @Override
    protected void append(Event logEvent) {
      if(initializationFailed) {
        addError("Check the configuration and whether the configured stream " + streamName
                 + " exists and is active. Failed to initialize kinesis logback appender: " + name);
        return;
      }
      try {
        String message = this.layout.doLayout(logEvent);
  
        putMessage(message);
      }
      catch(Exception e) {
        addError("Failed to schedule log entry for publishing into Kinesis stream: " + streamName, e);
      }
    }
docs: 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.