Logging CXF日志拦截器
我目前正在使用《CXF用户指南》中提到的log4j记录CXF。但是日志文件正在泛滥,并且变得无法管理所有输入/输出有效负载日志 只有当某些故障/异常作为输出生成时,我才需要记录传入的SOAP负载。我知道这需要编写自定义拦截器,但这是否可能实现 谁能给我一些链接/提示,或者是一些示例代码 提前谢谢 Tirthankar此链接可能有助于: 可以通过编写自定义拦截器并在cxf.xml文件中添加bean ref来完成此操作:Logging CXF日志拦截器,logging,soap,cxf,interceptor,Logging,Soap,Cxf,Interceptor,我目前正在使用《CXF用户指南》中提到的log4j记录CXF。但是日志文件正在泛滥,并且变得无法管理所有输入/输出有效负载日志 只有当某些故障/异常作为输出生成时,我才需要记录传入的SOAP负载。我知道这需要编写自定义拦截器,但这是否可能实现 谁能给我一些链接/提示,或者是一些示例代码 提前谢谢 Tirthankar此链接可能有助于: 可以通过编写自定义拦截器并在cxf.xml文件中添加bean ref来完成此操作: <bean id="customIncomingSoapFaultInt
<bean id="customIncomingSoapFaultInterceptor" class="com.tirtha.CustomIncomingSoapFaultInterceptor" />
<cxf:bus>
<cxf:inFaultInterceptors>
<ref bean="customIncomingSoapFaultInterceptor" />
</cxf:inFaultInterceptors>
</cxf:bus>
您需要一个自定义的
功能
来只记录SOAP故障/异常
以下是LoggingFeature.initializeProvider()
方法的源代码。如您所见,在这个方法中添加了错误拦截器
@Override
protected void initializeProvider(InterceptorProvider provider, Bus bus) {
if (limit == DEFAULT_LIMIT && inLocation == null
&& outLocation == null && !prettyLogging) {
provider.getInInterceptors().add(IN);
>>> provider.getInFaultInterceptors().add(IN);
provider.getOutInterceptors().add(OUT);
>>> provider.getOutFaultInterceptors().add(OUT);
} else {
LoggingInInterceptor in = new LoggingInInterceptor(limit);
in.setOutputLocation(inLocation);
in.setPrettyLogging(prettyLogging);
in.setShowBinaryContent(showBinary);
LoggingOutInterceptor out = new LoggingOutInterceptor(limit);
out.setOutputLocation(outLocation);
out.setPrettyLogging(prettyLogging);
out.setShowBinaryContent(showBinary);
provider.getInInterceptors().add(in);
provider.getInFaultInterceptors().add(in);
provider.getOutInterceptors().add(out);
provider.getOutFaultInterceptors().add(out);
}
}
您可以编写自己的LoggingFeature
并覆盖initializeProvider
,如下所示:
public class CustomLoggingFeature extends LoggingFeature {
@Override
protected void initializeProvider(InterceptorProvider provider, Bus bus) {
provider.getInFaultInterceptors().add(new LoggingInInterceptor(getLimit()));
provider.getOutFaultInterceptors().add(new LoggingOutInterceptor(getLimit()));
}
}
然后您可以按如下方式激活CustomLoggingFeature
:
@WebService
@Features(classes = {CustomLoggingFeature.class})
public interface AssetServices {
}
有人建议。。。。。。。我还是被卡住了!!祝大家新年快乐。
@WebService
@Features(classes = {CustomLoggingFeature.class})
public interface AssetServices {
}