Подтвердить что ты не робот

Как я могу сделать Spring WebServices регистрировать все запросы SOAP?

Мне нужны все запросы SOAP, зарегистрированные в CommonLogFormat (см. http://en.wikipedia.org/wiki/Common_Log_Format), плюс продолжительность (количество времени, которое требуется для обработки запроса).

Какой лучший способ сделать это? Похоже, что можно настроить log4j для Spring WebServices, но будет ли он регистрировать все значения, которые меня интересуют? http://pijava.wordpress.com/2009/12/04/spring-webservice-soap-requestresponse-logging-with-log4j/

EDIT: мы фактически используем SLF4J, а не Log4j. Кроме того, похоже, что это можно сделать, настроив PayloadLoggingInterceptor: http://static.springsource.org/spring-ws/site/reference/html/server.html#server-endpoint-interceptor

Но я не уверен, куда отправятся сообщения журнала. Я добавил, что перехватчик для наших перехватчиков, и я не вижу сообщений в журнале.

4b9b3361

Ответ 1

Вы можете использовать это, чтобы регистрировать необработанный paylod входящих и исходящих вызовов веб-сервисов. Я не уверен, как регистрировать, как долго выполнялось сообщение веб-службы.

   <!-- Spring Webservice XML -->
   <logger name="org.springframework.ws.client.MessageTracing">
    <level value="TRACE"/> 
   </logger>
   <logger name="org.springframework.ws.server.MessageTracing">
    <level value="TRACE"/> 
   </logger>

Дополнительную информацию можно найти на http://static.springsource.org/spring-ws/site/reference/html/common.html#logging

Ответ 2

Для Spring загрузки проект, добавленный ниже в 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

Ответ 3

Это сработало для меня. Он регистрирует отправленное сообщение запроса и полученный ответ. Вы могли бы выработать общее время, взятое из журнала.

log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
log4j.logger.org.springframework.ws.client.MessageTracing.received=TRACE

Ответ 4

Во-первых, SLF4J - это просто простой фасад. Это означает, что вам по-прежнему нужна структура ведения журнала (например, java.util.logging, logback, log4j).

Во-вторых, Spring -ws использует интерфейс Commons Logging, который является другим простым фасадом, например SLF4J.

Наконец, вы можете использовать нижеследующую настройку, чтобы включить Spring -ws функцию ведения журнала сообщений.

log4j.logger.org.springframework.ws.client.MessageTracing.sent=DEBUG
log4j.logger.org.springframework.ws.client.MessageTracing.received=TRACE

log4j.logger.org.springframework.ws.server.MessageTracing.sent=DEBUG
log4j.logger.org.springframework.ws.server.MessageTracing.received=TRACE

Ответ 5

Включите в файл log4j.properties следующее:

  • Чтобы зарегистрировать все серверные сообщения: log4j.logger.org.springframework.ws.server.MessageTracing=DEBUG
  • Чтобы зарегистрировать все клиентские сообщения: log4j.logger.org.springframework.ws.client.MessageTracing=TRACE

На уровне DEBUG регистрируется только корневой элемент полезной нагрузки

На уровне TRACE - регистрируется весь контент сообщения

Наконец, для регистрации только отправленных или полученных сообщений используйте .sent или .received в конце конфигураций.

ex: log4j.logger.org.springframework.ws.server.MessageTracing.received=DEBUG регистрирует загруженный на стороне клиента загрузочный корневой элемент возвращение:

DEBUG WebServiceMessageReceiverHandlerAdapter:114 - Accepting incoming [[email protected]62d9] to [http://localhost:8080/mock-platform/services]

Для более info