protected void collectHttpRequest(final StringMap contextData) {
        val requestUrl = StringUtils.defaultString(contextData.getValue("requestUrl"));
        if (StringUtils.isNotBlank(requestUrl)) {
            val httpRequest = Map.of(
                "requestMethod", StringUtils.defaultString(contextData.getValue("method")),
                "requestUrl", requestUrl,
                "protocol", StringUtils.defaultString(contextData.getValue("protocol")),
                "userAgent", StringUtils.defaultString(contextData.getValue(HttpHeaders.USER_AGENT)),
                "remoteIp", StringUtils.defaultString(contextData.getValue("remoteAddress")));
            contextData.putValue("httpRequest", httpRequest);
            httpRequest.forEach((key, value) -> contextData.putValue("httpRequest-%s".formatted(key), value));
        }
    }
Build google cloud appender.

@param name           the name
@param projectId      the project id
@param flattenMessage the flatten message
@param appenderRef    the appender ref
@param filter         the filter
@param config         the config
@return the google cloud appender
support/cas-server-support-gcp-logging/src/main/java/org/apereo/cas/logging/GoogleCloudAppender.java