【发布时间】:2015-06-17 06:25:19
【问题描述】:
同学们,你们好。我有点困惑。 我有一个像这样http://snag.gy/cJkzg.jpg 在 Mule 上制作的简单数据流 实际上它是一个 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 日期戳=dd.MM.yyyy HH:mm:ss.SSS log4j.rootLogger=INFO、标准输出、默认日志、错误日志
所有 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{${dateamp}} %-5p %c{1}:%L - %m%n log4j.appender.defaultLog.encoding=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{${dateamp}} %-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{${dateamp}} %-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 有效负载,但在日志文件中没有。
更新 2 下一行添加到 log4j.properties
log4j.logger.org.apache.cxf.interceptor.LoggingOutInterceptor=TRACE, 查询日志 log4j.additivity.org.apache.cxf.interceptor.LoggingOutInterceptor=true
log4j.logger.org.apache.cxf.interceptor.LoggingInInterceptor=TRACE, 查询日志 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 已创建但为空。 =(
更新 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
【问题讨论】: