如何在日志文件下打印CXF SOAP Request

时间:2011-11-10 04:48:30

标签: cxf

@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor"  )
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")

public class SKTWeb implements SKTWebService {

// method logic goes here 

}

嗨,在CXF方法实现中添加这两行之后。 我可以在tomcat服务器控制台

下获得SOAP请求和响应的鞭子

查看Tomcat控制台下打印的SOAP请求实例

INFO: Inbound Message
----------------------------
ID: 1
Address: /Sktweb-33.0/services/SKTWeb
Encoding: UTF-8
Content-Type: text/xml; charset=UTF-8
Headers: {cache-control=[no-cache], content-type=[text/xml; charset=UTF-8], connection=[keep-alive], host=[local
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns4:strategy xmlns:ns

有人可以告诉我如何在我的日志文件(Log4j)中找到它

目前这是我的log4j.properties文件

log4j.rootCategory=INFO, A1

# A1 is a DailyRollingFileAppender

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.file=/Haieeee.log
log4j.appender.A1.datePattern='.'yyyy-MM-dd
log4j.appender.A1.append=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-22d{dd/MMM/yyyy HH:mm:ss} - %m%n

我还在Web应用程序中有META-INF \ cxf \ org \ apache \ cxf \ Logger Log4jLogger.class。 我也保持

<cxf:bus>
<cxf:features>
<cxf:logging/>
</cxf:features>
</cxf:bus> 

在endpoints.xml文件中

请帮助

3 个答案:

答案 0 :(得分:2)

看起来有点混乱。您需要已组装的应用程序具有可定位文件META-INF/cxf/org.apache.cxf.Logger(是的,这些是点!它不是.java或.class文件)并且它应该具有以下内容:

org.apache.cxf.common.logging.Log4jLogger

我在我的代码中使用了上述内容,它就像一个魅力。 (我不会将它与消息记录功能一起使用;根据我的口味部署时流量过多......)

答案 1 :(得分:0)

基本上,您希望CXF选择您的属性文件,然后它使用此属性文件而不是CXF。 我在我的CXF应用程序中使用spring配置。如果您没有使用任何Spring配置,那么您创建一个新配置并在启动时使用spring上下文侦听器加载它,然后您可以在XML文件中添加以下代码。

<bean id="log4jInitialization"
        class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
        <property name="targetMethod" value="initLogging" />
        <property name="arguments">
            <list>
                <value>file:fullpath/filename.properties</value>
            </list>
        </property>
    </bean>

您还可以在classpath:filename.properties中拥有<list> </list>。在Spring框架中实现的日志记录将用于记录所有请求和响应。您还可以在应用程序中使用相同的日志记录实现。

答案 2 :(得分:0)

总是使用拦截器...添加slf4j-log4j12-1.6.1.jar,slf4j-api-1.6.1.jar和commons-logging-1.1.1.jar。将以下代码粘贴到cxf.xml中...

<bean class="org.apache.cxf.interceptor.LoggingInInterceptor" id="loggingInInterceptor" />
    <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" id="logOutInterceptor" />
    <cxf:bus>
        <cxf:inInterceptors>
            <ref bean="loggingInInterceptor" />
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <ref bean="logOutInterceptor" />
        </cxf:outInterceptors>
    </cxf:bus>