我需要在CommonLogFormat
中记录所有SOAP请求(请参见http://en.wikipedia.org/wiki/Common_Log_Format),以及持续时间(处理请求所需的时间)。
最好的方法是什么?看起来可以为Spring WebServices配置log4j,但是它会记录我感兴趣的所有值吗?http://pijava.wordpress.com/2009/12/04/spring-webservice-soap-requestresponse-logging-with-log4j/
编辑:我们实际上使用的是SLF4J
,而不是Log4j
。而且,看起来可以通过配置PayloadLoggingInterceptor来实现这一点:http://static.springsource.org/spring-ws/site/reference/html/server.html#server-endpoint-interceptor
但是我不确定日志消息会去哪里。我把那个拦截器添加到我们的拦截器中,我没有看到任何日志消息。
9条答案
按热度按时间p4rjhz4m1#
对于**Sping Boot **项目,在
application.properties
中添加以下内容对我有效:qvsjd97n2#
您可以使用它来记录传入和传出Web服务调用的原始有效负载。我不知道如何记录Web服务通信所用的时间。
更多详细信息请访问http://static.springsource.org/spring-ws/site/reference/html/common.html#logging
tjrkku2a3#
这对我很有效。它记录了发送的请求消息和收到的响应。你可以从日志中计算出所用的总时间。
gupuwyp24#
如果您有自己的日志记录系统,则可以使用以下拦截器来记录SOAP消息。
在每个句柄方法中,您可以轻松地使用
payload
来获取原始soap消息。yuvru6vn5#
首先,SLF 4J只是一个简单的外观,这意味着您仍然需要一个日志框架(例如java.util.logging、logback、log4j)。
其次,Spring-ws使用了Commons Logging接口,这是另一个类似于SLF 4J的简单外观。
最后,您可以使用下面的设置来启用Spring-ws消息日志功能。
2admgd596#
在
log4j.properties
文件中包含以下内容...1.要记录所有服务器端消息,请执行下列操作:
log4j.logger.org.springframework.ws.server.MessageTracing=DEBUG
个1.记录所有客户端消息:
log4j.logger.org.springframework.ws.client.MessageTracing=TRACE
在
DEBUG
级别-仅记录有效负载根元素在
TRACE
级别-记录整个消息内容最后,要仅记录发送或接收的消息,请在配置结束时使用
.sent
或.received
。例如:
log4j.logger.org.springframework.ws.server.MessageTracing.received=DEBUG
记录客户端接收的消息有效负载根元素,返回:更多信息
gr8qqesn7#
将servlet过滤器添加到web.xml中的springws(以便与org.springframework.web.servlet.DispatcherServlet一起移动
您可以在这里找到筛选器http://www.wetfeetblog.com/servlet-filer-to-log-request-and-response-details-and-payload/431
在过滤器内部,您可以根据需要进行日志记录
kq4fsx7k8#
这些都是我的类,但我仍然不能在我的控制台中记录所有的请求和响应。我不知道我做错了什么。我也实现了客户端配置。
g6baxovj9#
最简单的方法是将属性添加到安全配置(securityPolicy.xml)中:
不需要在
application.properties
内进行其他设置。选中“了解安全策略文件”链接。