簡體   English   中英

如何攔截CXF Web服務日志記錄?

[英]How to intercept CXF webservice logging?

如何攔截CXF日志記錄以在日志記錄期間划掉一些數字(基本上是銀行+信用卡信息)。

我使用以下內容進行log4j自動日志記錄:

    Client client = ClientProxy.getClient(port);
    client.getInInterceptors().add(new LoggingInInterceptor());
    client.getOutInterceptors().add(new LoggingOutInterceptor());

我需要更改什么才能調整soap xml請求並在記錄之前刪除一些值?

您可以使用自定義日志攔截器來執行此操作,您可以在其中處理郵件。

public class CustLogInInterceptor extends AbstractSoapInterceptor {


    public CustLogInInterceptor() {
        super(Phase.RECEIVE);
    }

    @Override
    public void handleMessage(SoapMessage message) throws Fault {

        HttpServletRequest httpRequest = (HttpServletRequest) message.get ( AbstractHTTPDestination.HTTP_REQUEST );
        LoggerUtil.setLog(CustLogInInterceptor.class , LogConstants.DEBUG, "Request From the address : " + httpRequest.getRemoteAddr ( ) );

        try
        {
            //Handle you custom code add log it
              LoggerUtil.setLog(CustLogInInterceptor.class , LogConstants.DEBUG, "Log here" );
        }

        catch ( Exception ex )
        {
            ex.printStackTrace ( );
        }



    }

}

您的CXF配置如下所示

<jaxws:endpoint>

    <jaxws:inInterceptors>
           <ref bean="custInterceptor"/>
        </jaxws:inInterceptors>

</jaxws:endpoint>

<bean id="custInterceptor" class="com.kp.CustLogInInterceptor">

CXF日志記錄攔截器有一個方法:

protected String transform(String originalLogString) {
    return originalLogString;
} 

可以被覆蓋以進行任何類型的混淆或其他可能需要的東西。 只需創建子類並覆蓋該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM