[英]Disable CXF logging for one web service
在我的应用程序中,我想使用业务逻辑记录请求和响应。 应用程序通过SOAP通信执行一些后端逻辑,这就是我要记录的内容。
不幸的是,在同一应用程序中,我必须提供数据(平均为4个请求/秒)。假设此服务名称为PlatformDataService。
如何仅关闭一个Web服务的CXF日志记录?
Enviorment:
我通过以下方式打开服务器上的登录:
您可以扩展LoggingInInterceptor
和LoggingOutInterceptor
。 基于soapAction
您可以仅忽略一项服务的日志记录。
将LoggingOutInterceptor
扩展为所有出站请求,并像这样覆盖方法handleMessage
。
private boolean doNotLog=false;
public void handleMessage(Message message) throws Fault {
TreeMap<String,List> protocolHeaders =
(TreeMap<String, List>) message.get("org.apache.cxf.message.Message.PROTOCOL_HEADERS");
if (protocolHeaders != null) {
List value = protocolHeaders.get("SOAPAction");
String soapAction = value != null ? (String)value.get(0) : "";
if (soapAction.equalIgnoreCase(YOUR_SERVICE_SOAP_ACTION)) {
doNotLog=true;
}
}
super.handleMessage(message);
}
现在,您必须在同一类中重写另一种方法。
@Override
protected String transform(String originalLogString) {
if (doNotLog) {
return null;
}
return originalLogString;
}
对于所有入站响应,请扩展LoggingInInterceptor
并仅重写转换方法。 您可以只检查originalLogString的responseType并忽略它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.