Hallo ich benutze Frühling ws + slf4j für die Protokollierung. Während Seife Anfrage Anmeldung & Antwort unter propertiesin mit application.propertiesSpring ws Logging-Problem mit SLF4j
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
Statt Protokollierung Anfrage & Antwort darauf folgendes Objekt druckt,
13:13:06.155 [main] DEBUG o.s.ws.client.MessageTracing.sent - Sent request [SaajSoapMessage {http://ws.sample.customer.com/}getCustomerDetails]
13:13:06.411 [main] DEBUG o.s.w.client.MessageTracing.received - Received response [SaajSoapMessage {http://ws.sample.customer.com/}getCustomerDetailsResponse] for request [SaajSoapMessage {http://ws.sample.customer.com/}getCustomerDetails]
I webservice mit folgender Weise anzurufenden:
return (JAXBElement) getWebServiceTemplate().marshalSendAndReceive(uri, request, webServiceMessage -> {
SoapMessage soapMessage = (SoapMessage) webServiceMessage;
Marshaller marshaller = getMarshaller();
marshaller.marshal(jaxbElement, soapMessage.getSoapHeader().getResult());
});
Ich weiß nicht, warum es die Anfrage & Antwort nicht druckt. Auch ich habe versucht, die Anfrage & Antwort mit "SoapEnvelopeLoggingInterceptor" oder "ClientInterceptor" abzufangen, aber nichts wird ausgelöst, aber bekam das Antwortobjekt.
public class LogbackInterceptor implements ClientInterceptor {
private static final Logger logger = LoggerFactory.getLogger(LogbackInterceptor.class);
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
logger.debug("Sent request by sample [" + messageContext.getRequest() + "]");
return true;
}
public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException {
logger.debug("Received response by sample [" + messageContext.getResponse() + "] for request [" +
messageContext.getRequest() + "]");
return true;
}
@Override
public boolean handleFault(MessageContext messageContext) throws WebServiceClientException {
// TODO Auto-generated method stub
return false;
}
@Override
public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException {
// TODO Auto-generated method stub
}
}
@Component
public class LoggingInterceptor extends SoapEnvelopeLoggingInterceptor{
private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);
@Override
protected void logMessage(String message) {
System.out.println("Entered log message");
logger.debug("LoggingInterceptor::logMessage");
logger.debug(message);
/* Example, here you could be logging to DB or whatever you want */
}
}
Es wäre toll, wenn jemand mir geholfen, dieses Problem zu beheben
LogbackInterceptor ist eine Schnittstelle. Wie funktioniert dieser Code? – Ravi