gpt4 book ai didi

java - 如何覆盖客户端 Soap 日志记录 - Spring Boot

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:29 24 4
gpt4 key购买 nike

我在 spring boot 应用程序中使用 soap 网络服务。响应/请求日志记录太大,因为一个属性太大。所以我想拦截该日志记录并删除有问题的属性。

我一直在弄乱 SoapEnvelopeLoggingInterceptor,但我认为那只是用于服务器端日志记录。它不会被拾起。

我在 yml 中配置了我的 soap 日志记录,如下所示:

logging:
pattern:
...
level:
...
org.springframework.ws.client.MessageTracing.sent: TRACE
org.springframework.ws.client.MessageTracing.received: TRACE
org.springframework.ws.server.MessageTracing: DEBUG

这对于记录请求和响应都很好,但我需要从信封中删除一个非常大的有问题的属性。有什么想法吗?

最佳答案

您可以扩展ClientInterceptorAdapter抽象实现ClientInterceptor并覆盖handleRequesthandleResponse来解析、修改和修改记录您的自定义消息。

以下代码委托(delegate)给 AbstractLoggingInterceptor handleRequesthandleResponse 并覆盖 logMessage 以创建自定义消息。

有点像

public class MyInterceptor extend ClientInterceptorAdapter {

private final Logger logger = LoggerFactory.getLogger(MyInterceptor.class);

private EndpointInterceptor endpointInterceptor = new AbstractLoggingInterceptor() {
@Override
protected Source getSource(WebServiceMessage webServiceMessage) {
// Base logic same as SoapEnvelopeLoggingInterceptor getSource method.You can adjust to your preference.
if(webServiceMessage instanceof SoapMessage) {
SoapMessage soapMessage = (SoapMessage)webServiceMessage;
return soapMessage.getEnvelope().getSource();
} else {
return null;
}
}
@Override
protected void logMessage(String message) {
// You can use your regex to remove the attribute and log the message.
this.logger.debug(message);
}
};

@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
return endpointInterceptor.handleRequest(messageContext, null);

}

@Override
public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException {
return endpointInterceptor.handleResponse(messageContext, null);

}

}

关于java - 如何覆盖客户端 Soap 日志记录 - Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44306966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com