我有终点课程:
@Endpoint
public class GetCustomerEndpoint {
public static final Logger log = LoggerFactory.getLogger(GetCustomerEndpoint .class);
@Transactional(value = "transactionManager", readOnly = true)
@PayloadRoot(namespace = WebServiceConfig.NAMESPACE_URI, localPart = "getCustomerRequest")
@ResponsePayload
public GetCustomerResponse getCustomer(@RequestPayload GetCustomerRequest serviceRequest)
throws ServerFaultException, ClientFaultException, Exception {
throw new Exception("Exception to log file");
}
但是当异常抛出时,它会显示在客户端:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring xml:lang="en">Exception to log file</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
在日志文件或控制台中为空。 我想在这两个地方看到所有异常,并且异常堆栈跟踪也是如此。
在我的日志配置中:
logging.level.org.springframework=INFO
答案 0 :(得分:0)
您必须在配置文件中添加一个新属性,以映射您要查看日志的包,例如:
logging.level.<package>=INFO
包的位置,或生成日志的类的父包。 您可以更具体地使用某些包,例如:
logging.level.com.test=INFO
logging.level.com.test.model=DEBUG
在这种情况下, com.test 包中的类将显示INFO日志, com.test.model 中的类将显示DEBUG日志。
答案 1 :(得分:0)
默认情况下,Spring-W似乎在日志上不显示任何stacktrace异常(我无法想象为什么)。
对我来说,这仅在注册并设置SoapFaultMappingExceptionResolver
bean之后才起作用。例如:
@Bean
public SoapFaultMappingExceptionResolver exceptionResolver() {
SoapFaultMappingExceptionResolver exceptionResolver = new SoapFaultMappingExceptionResolver();
SoapFaultDefinition faultDefinition = new SoapFaultDefinition();
faultDefinition.setFaultCode(SoapFaultDefinition.SERVER);
exceptionResolver.setDefaultFault(faultDefinition);
Properties errorMappings = new Properties();
errorMappings.setProperty(Exception.class.getName(), SoapFaultDefinition.SERVER.toString());
exceptionResolver.setExceptionMappings(errorMappings);
exceptionResolver.setOrder(1);
return exceptionResolver;
}