Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向CXF web服务添加有效负载(xml响应和请求日志记录)?_Java_Logging_Mule_Cxf - Fatal编程技术网

Java 如何向CXF web服务添加有效负载(xml响应和请求日志记录)?

Java 如何向CXF web服务添加有效负载(xml响应和请求日志记录)?,java,logging,mule,cxf,Java,Logging,Mule,Cxf,各位同事好。我有点困惑。 我在Mule上制作了一个简单的数据流,如下所示 事实上,它是一个CXFSOAPWeb服务 现在我需要添加响应和请求xml日志,但我不知道选择哪种方式。 据我从互联网上了解,还有下一种方法: 1.添加Mule记录器元素 2.在src/main/resources/META-INF/cxf/I下,我没有创建一个名为org.apache.cxf.Logger的文件,该文件包含以下内容- org.apache.cxf.common.logging.Log4jLogger 然后

各位同事好。我有点困惑。 我在Mule上制作了一个简单的数据流,如下所示 事实上,它是一个CXFSOAPWeb服务

现在我需要添加响应和请求xml日志,但我不知道选择哪种方式。 据我从互联网上了解,还有下一种方法: 1.添加Mule记录器元素 2.在src/main/resources/META-INF/cxf/I下,我没有创建一个名为org.apache.cxf.Logger的文件,该文件包含以下内容-

org.apache.cxf.common.logging.Log4jLogger
然后将记录器添加到我的\src\main\resources\log4j.properties文件中

看来我只知道这些

目前,我的log4j.properties如下所示:

log.dir=./logs datestamp=dd.MM.yyyy HH:MM:ss.SSS log4j.rootLogger=INFO、stdout、defaultLog、errorlog

所有信息日志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.patternalyout log4j.appender.defaultLog.layout.ConversionPattern=%d{${datestamp} %-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.patternalyout 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.patternalyout 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>
现在我在queryLog.log中有了有效负载,但响应看起来像字符串。我正在尝试将其转换为漂亮的xml

知道如何在queryLog中转换成漂亮的xml响应字符串吗

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

您只需在Studio的流中放置一个记录器,并将其消息设置为[payload],或者在XML配置模式下添加一个标记。如果有效负载是一个字符串,它将直接工作,如果它是一个更复杂的对象,它将只打印对象引用


通常,您可以在需要记录数据之前向字符串转换器添加对象。有时,您必须在转换方面更具创造性—查看Studio中提供的内容,不要害怕尝试。

如果您要公开CXF web服务,则始终可以使用CXF侦听器记录您的请求和响应

这里显示了可用于日志记录的不同CXF日志拦截器:-


是的,在Mule standalone server中,您可能需要log4j在控制台中显示日志

I在flow中添加logger元素和有效负载。什么也没发生。似乎这并不容易。您不需要在logger for CXF logging interceptor中添加有效负载。。它将在控制台中显示请求和响应。。您只需要正确配置log4j。。您是在studio中运行还是在单机版中运行?@AnirbanSenChowdhary,看:我添加了,您完全正确,负载显示在控制台中,而不是日志文件中。我在Anypoint studio中开发,在本地运行应用程序。我有log4j日志记录。您可以通过参考以下内容在src/resource文件夹中配置log4j.xml:-并且可以在控制台中获得独立服务器的请求-响应显示。。对于studio,我想你无论如何都可以得到它。。但是,如果您无法将log4j.xml文件添加到src/resource文件夹中。。从上面的链接检查log4j.xml的配置,我发现您的Mule配置中存在问题。。您正在您的..中使用EndPoindImpl。。您应该在这里使用接口而不是实现类,并且您的实现类将位于正确的位置
Payload: <soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body> bla
bla bla bla