Java 日志Restlet ClientResource请求文本

Java 日志Restlet ClientResource请求文本,java,spring,logging,slf4j,restlet,Java,Spring,Logging,Slf4j,Restlet,我们在客户端使用Restlet 2.1.6与基于Restlet构建的服务器通信。尽管我们可能会尝试,但我们无法记录文本JSON或XML,甚至无法记录我们将要发送到服务器的整个HTTP请求。我们使用Log4j上的Slf4j作为我们的日志记录工具 通过在Spring上下文中设置系统属性,我们已使用其Slf4jLoggerFacade配置了Restlet: <bean id="systemPrereqs" class="org.springframework.beans.factory.

我们在客户端使用Restlet 2.1.6与基于Restlet构建的服务器通信。尽管我们可能会尝试,但我们无法记录文本JSON或XML,甚至无法记录我们将要发送到服务器的整个HTTP请求。我们使用Log4j上的Slf4j作为我们的日志记录工具

通过在Spring上下文中设置系统属性,我们已使用其Slf4jLoggerFacade配置了Restlet:

<bean id="systemPrereqs"
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" value="#{@systemProperties}" />
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop key="org.restlet.engine.loggerFacadeClass">org.restlet.ext.slf4j.Slf4jLoggerFacade</prop>
        </util:properties>
    </property>
</bean>
我们非常确定system属性正在工作,因为日志确实包含新条目,但它不包含我们需要的详细信息。下面是Restlet输出到日志的内容摘录:

2013-12-11 09:52:10,860  INFO taskScheduler-1 org.restlet:141 - Starting the HTTP client
2013-12-11 09:52:10,961 DEBUG taskScheduler-1 org.restlet:96 - The length of the message body is unknown. The entity must be handled carefully and consumed entirely in order to surely release the connection.
2013-12-11 09:52:14,716  INFO Finalizer org.restlet:141 - Stopping the HTTP client
现在,我们正在以一种昂贵的方式进行日志记录,将表示形式提取到一个临时字符串中,记录它,然后返回一个新的表示形式。我们必须这样做,因为表示可能是基于流的,并且通过读取来消耗

private Representation logIt(Representation representation) {
    String representationText = representation.getText();
    logger.trace(representationText);
    representation = new StringRepresentation(representationText);
    return representation;
}

我们如何让Restlet记录来自客户端的实际请求/响应文本并避免字符串复制和表示重构?

请发布进行记录的代码。
private Representation logIt(Representation representation) {
    String representationText = representation.getText();
    logger.trace(representationText);
    representation = new StringRepresentation(representationText);
    return representation;
}