【问题标题】:How can i insert org.springframework.ws.client.MessageTracing logs into DB如何将 org.springframework.ws.client.MessageTracing 日志插入数据库
【发布时间】:2014-01-22 17:59:03
【问题描述】:

我正在尝试将 org.springframework.ws.client.MessageTracing 日志记录到数据库中。

我将 MessageTracing 记录器添加到我的 logback.xml。

<logger name="org.springframework.ws.client.MessageTracing">
<level value="TRACE"/>
<appender-ref ref="STDOUT" />
<appender-ref ref="WebServiceDBAppender" />
</logger>

为了将它们插入 db,我提供了另一个 appender-ref,即 WebServiceDBAppender。扩展 AppenderBase 的是我的 DBAppender。

我重写了 append 方法并在 logback.xml 中输入了它们

我可以单独访问请求和响应。首先 org.springframework.ws.server.MessageTracing.received 我得到了它,然后是 org.springframework.ws.server.MessageTracing.send。

有什么方法可以同时到达它们以在同一行中插入数据库请求和响应?

【问题讨论】:

    标签: spring logback spring-integration spring-ws


    【解决方案1】:
    1. 您只能使用单一方法来实现它。
    2. 我建议你实现一些ClientInterceptor并将其注入WebServiceTemplate
    3. 服务器端PayloadLoggingInterceptor有类似的拦截器。 至于客户端没有这样的解决方案,我认为用ClientInterceptor 实现包装该拦截器不会那么困难。
    4. 这里是PayloadLoggingInterceptor 的扩展,如何同时记录requestresponse

      public class PayloadLoggingInterceptor extends org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor {
      
          private static Logger log = LoggerFactory.getLogger(PayloadLoggingInterceptor.class);
      
          protected boolean isLogEnabled() {
              return log.isDebugEnabled();
          }
      
          protected void logMessage(String message) {
              log.debug(message);
         }
      
         @Override
         public boolean handleResponse(MessageContext messageContext, Object endpoint) throws Exception {
              if (isLogEnabled()) {
                   logMessage("------------START-----------");
                   logMessageSource("Request: ", getSource(messageContext.getRequest()));
                   logMessageSource("Response: ", getSource(messageContext.getResponse()));
                   logMessage("------------END-----------");
              }
              return true;
         }
      }
      

    【讨论】:

    • 以及如何将“PayloadLoggingInterceptor”添加到“org.springframework.ws.client.core.WebServiceTemplate”?我有 WebServiceTemplate 有一些拦截器。
    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多