簡體   English   中英

如何將有效負載(XML響應和請求日志記錄)添加到CXF Web服務?

[英]How to add payload (xml response & request logging) to CXF web service?

同事們,你好 我有點困惑。 我在Mule上有一個簡單的數據流,就像這樣http://snag.gy/cJkzg.jpg實際上,它是CXF SOAP Web服務。

現在,我需要添加響應並請求xml日志記錄,但是我不知道選擇哪種方法。 據我從互聯網了解,有以下方法:1.添加Mule Logger元素2.在src / main / resources / META-INF / cxf /下(我沒有此文件夾),創建一個名為org.apache.cxf.Logger的文件,其中以下內容-

org.apache.cxf.common.logging.Log4jLogger

然后將記錄器添加到我的\\ src \\ main \\ resources \\ log4j.properties文件中。

看來這就是我所知道的

目前,我的log4j.properties看起來像:

log.dir =。/ logs datetamp = dd.MM.yyyy HH:mm:ss.SSS log4j.rootLogger = INFO,stdout,defaultLog,errorlog

所有INFO日志log4j.appender.defaultLog = org.apache.log4j.RollingFileAppender

log4j.appender.defaultLog.Threshold = TRACE log4j.appender.file.MaxFileSize = 5MB log4j.appender.file.MaxBackupIndex = 10 log4j.appender.defaultLog.File = $ {log.dir} /serv.log log4j.appender.defaultLog .layout = org.apache.log4j.PatternLayout log4j.appender.defaultLog.layout.ConversionPattern =%d {$ {datestamp}}%-5p%c {1}:%L-%m%n log4j.appender.defaultLog。編碼= UTF-8

錯誤日志log4j.appender.errorlog = org.apache.log4j.RollingFileAppender

log4j.appender.errorlog.Threshold =錯誤log4j.appender.file.MaxFileSize = 5MB log4j.appender.file.MaxBackupIndex = 10 log4j.appender.errorlog.File = $ {log.dir} /serv.err log4j.appender.errorlog .layout = org.apache.log4j.PatternLayout log4j.appender.errorlog.layout.ConversionPattern =%d {$ {datestamp}}%-5p%c {1}:%L-%m%n

log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Threshold = TRACE log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j。 appender.stdout.layout.ConversionPattern =%d {$ {datestamp}}%-5p%c {1}:%L-%m%n log4j.appender.stdout.encoding = UTF-8

如您所見,此屬性文件不支持有效負載日志記錄。

如何在我的情況下添加請求和響應日志? 我將感謝您提供任何代碼示例。
謝謝。

更新

我將攔截器添加到流中:

<?xml version="1.0"?>
<flow name="Flow1" name="Flow1">
        <inbound-endpoint exchange-pattern="request-response" host="localhost" port="45555" path="wserv" name="HTTP"/>
        <jaxws-service serviceClass="com.maya.ws.EndPoindImpl" name="CXF">

         <inInterceptors>
                    <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
                </inInterceptors>
                <outInterceptors>
                    <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
    </outInterceptors>

       </jaxws-service> 

        <component class="com.maya.ws.EndPoindImpl" name="Java"/>
    </flow>

現在我在控制台中有xml負載,但是在日志文件中卻沒有。

UPDATE 2接下來的行添加到log4j.properties

log4j.logger.org.apache.cxf.interceptor.LoggingOutInterceptor = TRACE,queryLog log4j.additivity.org.apache.cxf.interceptor.LoggingOutInterceptor = true

log4j.logger.org.apache.cxf.interceptor.LoggingInInterceptor = TRACE,queryLog log4j.additivity.org.apache.cxf.interceptor.LoggingInInterceptor = true

查詢日志log4j.appender.queryLog = org.apache.log4j.DailyRollingFileAppender

log4j.appender.queryLog.File = $ {log.dir} /queryLog.log log4j.appender.queryLog.layout = org.apache.log4j.PatternLayout log4j.appender.queryLog.layout.ConversionPattern =%d [%t]% -5p%c%x-%m%n log4j.appender.queryLog.DatePattern ='.'yyyy-MM-dd log4j.category.queryLogger = INFO,queryLog

queryLog已創建,但為空。 =(

更新3

我將queryLog添加到

log4j.rootLogger=INFO, stdout, defaultLog, errorlog

現在我在queryLog.log中有有效載荷,但是響應看起來像字符串。 我正在嘗試將其轉換為漂亮的xml。

任何想法如何在queryLog中轉換為漂亮的xml響應字符串?

Payload: <soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body> bla
bla bla bla

您可以簡單地將Logger放入Studio的流程中,並將其消息設置為#[payload],或在XML配置模式下添加標簽。 如果有效載荷是一個字符串,則可以直接工作,如果它是一個更復雜的對象,它將僅打印對象引用。

通常,您可以在需要記錄數據之前將對象添加到字符串轉換器。 有時,您將需要對轉換更加有創意-查看Studio中可用的功能,不要害怕嘗試。

如果要公開CXF Web服務,則始終可以使用CXF攔截器 記錄 請求和響應

這里顯示了可用於日志記錄的不同CXF日志記錄攔截器:-https: //developer.mulesoft.com/docs/display/current/CXF+Module+Configuration+Reference

是的,在Mule獨立服務器中,您可能需要log4j才能在控制台中顯示日志

暫無
暫無

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

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