Как сделать CXF SOAP Request для печати в файле журнала - PullRequest
0 голосов
/ 10 ноября 2011
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor"  )
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")

public class SKTWeb implements SKTWebService {

// method logic goes here 

}

Привет, после добавления этих двух строк внутри реализации метода CXF. Я мог получить кнут SOAP Requestand Response под консолью сервера tomcat

см. Экземпляр SOAP-запроса, напечатанного под консолью Tomcat

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

А также у меня есть META-INF \ cxf \ org \ apache \ cxf \ Logger Log4jLogger.class внутри веб-приложения. А также я держал

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

Внутри файла endpoints.xml

Любая помощь, пожалуйста

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

Кажется, немного путаницы. Вам нужно, чтобы ваше собранное приложение имело локализуемый файл META-INF/cxf/org.apache.cxf.Logger (да, это точки! Это не файл .java или .class), и он должен иметь содержимое:

org.apache.cxf.common.logging.Log4jLogger

Я использую в коде именно то, что написано выше, и это работает как шарм. (Я не использую его с функцией ведения журнала ; слишком большой трафик при развертывании на мой вкус ...)

0 голосов
/ 23 января 2013

Всегда используйте перехватчики ... Добавьте 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>
0 голосов
/ 21 ноября 2011

По сути, вы хотите, чтобы ваш файл свойств выбирался CXF, тогда он использует этот файл свойств вместо файлов CXF. Я использую конфигурацию весны в моем приложении CXF. Если вы не используете конфигурацию 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 Framework будет использоваться для регистрации всех запросов и ответов. Вы также можете использовать ту же реализацию ведения журналов, чтобы использовать в своем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...