一尘不染

如何使Spring WebServices记录所有SOAP请求?

spring

我需要所有已登录的SOAP请求CommonLogFormat,以及持续时间(处理请求所花费的时间)。

最好的方法是什么?看起来可以为Spring WebServices配置log4j,但是它将记录所有值吗?

将以下行添加到log4j.xml

<appender
  name="SPRINGLOGFILE"
  class="org.apache.log4j.RollingFileAppender">
  <param
    name="File"
    value="logs/spring.log" />
  <param
    name="Append"
    value="true" />
  <param
    name="MaxFileSize"
    value="1MB" />
  <param
    name="MaxBackupIndex"
    value="5" />
  <layout class="org.apache.log4j.PatternLayout">
    <param
      name="ConversionPattern"
      value="%d %-5p %c{2} - %m%n" />
  </layout>
</appender>



<logger name="org.springframework.ws">
  <priority value="DEBUG" />
  <appender-ref ref="SPRINGLOGFILE" />
</logger>

编辑:我们实际上是在使用SLF4J,而不是Log4j。另外,看起来可以通过配置PayloadLoggingInterceptor来做到这一点

但是我不确定日志消息会去哪里。我将该拦截器添加到了我们的拦截器中,但没有看到任何日志消息。


阅读 366

收藏
2020-04-19

共1个答案

一尘不染

对于Spring Boot项目,application.properties在我下面添加了以下内容:

logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.ws.client.MessageTracing.sent=DEBUG
logging.level.org.springframework.ws.server.MessageTracing.sent=DEBUG
logging.level.org.springframework.ws.client.MessageTracing.received=TRACE
logging.level.org.springframework.ws.server.MessageTracing.received=TRACE
2020-04-19