Logging CXF日志拦截器

Logging CXF日志拦截器,logging,soap,cxf,interceptor,Logging,Soap,Cxf,Interceptor,我目前正在使用《CXF用户指南》中提到的log4j记录CXF。但是日志文件正在泛滥,并且变得无法管理所有输入/输出有效负载日志 只有当某些故障/异常作为输出生成时,我才需要记录传入的SOAP负载。我知道这需要编写自定义拦截器,但这是否可能实现 谁能给我一些链接/提示,或者是一些示例代码 提前谢谢 Tirthankar此链接可能有助于: 可以通过编写自定义拦截器并在cxf.xml文件中添加bean ref来完成此操作: <bean id="customIncomingSoapFaultInt

我目前正在使用《CXF用户指南》中提到的log4j记录CXF。但是日志文件正在泛滥,并且变得无法管理所有输入/输出有效负载日志

只有当某些故障/异常作为输出生成时,我才需要记录传入的SOAP负载。我知道这需要编写自定义拦截器,但这是否可能实现

谁能给我一些链接/提示,或者是一些示例代码

提前谢谢 Tirthankar

此链接可能有助于:

可以通过编写自定义拦截器并在cxf.xml文件中添加bean ref来完成此操作:

<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 {
}