设置后
<cxf:properties>
<entry key="faultStackTraceEnabled" value="true" />
</cxf:properties>
我能够获得堆栈跟踪。但我正在努力将其从传出消息中删除。
我尝试使用以下代码:
Fault fault = (Fault) message.getContent(Exception.class);
StackTraceElement[] stackTrace = fault.getCause().getStackTrace();
List<StackTraceElement> tempList = new ArrayList<StackTraceElement>(Arrays.asList(stackTrace));
tempList.removeAll(tempList);
stackTrace = tempList.toArray(new StackTraceElement[0]);
fault.getCause().setStackTrace(stackTrace);
message.setContent(Exception.class, fault);
即使最后一行是使用空stackTrace设置内容,但传出消息仍然具有完整的堆栈跟踪。
您能否提供一些代码段如何删除<stackTrace>
?
答案 0 :(得分:1)
@soilworker我能够实现我想要的目标。我正在寻找stackTrace进行日志记录。
我删除了以下行
syntax on
set tabstop=3
set shiftwidth=3
execute pathogen#infect()
filetype indent on
set smartindent
代码:
<cxf:properties>
<entry key="faultStackTraceEnabled" value="true" />
</cxf:properties>`
因此传出消息中没有Fault fault = (Fault) message.getContent(Exception.class);
String exceptionMsg = null;
for (StackTraceElement element : fault.getCause().getStackTrace()) {
exceptionMsg = // concatenate
}
。
但知道如何在传出拦截器中修改传出错误(如添加其他标记)会很有趣。
感谢。