@Override
    public void append(final LogEvent logEvent) {
        val event = LoggingUtils.prepareLogEvent(logEvent);
        val message = new String(getLayout().toByteArray(event), StandardCharsets.UTF_8);
        val timestamp = event.getTimeMillis();
        val awsLogEvent = InputLogEvent.builder().message(message).timestamp(timestamp).build();
        if (!queue.offer(awsLogEvent) && !queueFull) {
            queueFull = true;
        } else if (queueFull) {
            queueFull = false;
        }
    }
Create appender cloud watch appender.

@param name                             the name
@param endpoint                         the endpoint
@param awsLogStreamName                 the aws log stream name
@param awsLogGroupName                  the aws log group name
@param awsLogStreamFlushPeriodInSeconds the aws log stream flush period in seconds
@param credentialAccessKey              the credential access key
@param credentialSecretKey              the credential secret key
@param awsLogRegionName                 the aws log region name
@param layout                           the layout
@param createIfNeeded                   whether to create resources if needed
@param createLogGroupIfNeeded           whether to create log group if needed
@param createLogStreamIfNeeded          whether to create log stream if needed
@return the cloud watch appender
support/cas-server-support-aws-cloudwatch/src/main/java/org/apereo/cas/logging/CloudWatchAppender.java