@NonNull
    private Flux<? extends DataBuffer> appendResponse(final Publisher<? extends DataBuffer> body) {
        ShenyuContext shenyuContext = exchange.getAttribute(Constants.CONTEXT);
        Objects.requireNonNull(shenyuContext);
        if (Objects.nonNull(getStatusCode())) {
            logInfo.setStatus(getStatusCode().value());
        }
        logInfo.setResponseHeader(LogCollectUtils.getHeaders(getHeaders()));
        logInfo.setTraceId(getTraceId());
        final MediaType mediaType = exchange.getResponse().getHeaders().getContentType();
        if (MediaTypeUtils.isByteType(mediaType)) {
            return Flux.from(body).doFinally(signal -> logResponse(shenyuContext, null));
        }
        BodyWriter writer = new BodyWriter();
        return Flux.from(body).doOnNext(buffer -> {
            if (LogCollectUtils.isNotBinaryType(getHeaders())) {
                try (DataBuffer.ByteBufferIterator bufferIterator = buffer.readableByteBuffers()) {
                    bufferIterator.forEachRemaining(byteBuffer -> writer.write(byteBuffer.asReadOnlyBuffer()));
                }
            }
        }).doFinally(signal -> logResponse(shenyuContext, writer));
    }
append response.

@param body publisher
@return wrap Flux
shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/body/LoggingServerHttpResponse.java