【发布时间】:2016-05-19 15:39:59
【问题描述】:
我使用 CXF 3.1 wsdl2java 生成了我的服务,所以没有 cxf.xml。
我正在尝试将服务的请求和响应 XML 添加到我的 log4j2 设置中。由于版本更改等原因存在大量冲突信息。我的请求/响应 xml CXF 日志记录文件始终为空。
这是最接近我的设置:How to log CXF webservice requests with log4j2?
所以我的 log4j2.xml 中有以下内容
<logger name="org.apache.cxf" additivity="false" level="info">
<AppenderRef ref="APP_LOG_FILE"/>
</logger>
<logger name="org.apache.cxf.interceptor.LoggingInInterceptor" additivity="false" level="info">
<AppenderRef ref="WS_LOG_FILE" />
</logger>
<logger name="org.apache.cxf.interceptor.LoggingOutInterceptor" additivity="false" level="info">
<AppenderRef ref="WS_LOG_FILE" />
</logger>
没有显示附加程序,但它们在那里,填充了 APP_LOG_FILE 但 WS_LOG_FILE 附加程序文件始终为空,同时交换消息。
我添加了一个包含此内容的 META-INF/cxf/org.apache.cxf.Logger 文件
org.apache.cxf.common.logging.Slf4jLogger
在运行我的 jar 时,我还尝试使用附加的命令行参数来替代 cxf.Logger 文件:
-Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Slf4jLogger
我添加了额外的依赖:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.0</version>
</dependency>
我在日志拦截器(它们是必需的还是 log4j2.xml 中配置的替代品?)和没有它们的情况下都尝试了以下操作,如当前注释掉的那样。
GetComparisonDecisionService equinitiComparisonService = new GetComparisonDecisionService();
GetComparisonDecisionInterface comparison = equinitiComparisonService.getGetComparisonDecision();
/*
Client client = ClientProxy.getClient(equinitiComparisonService.getPort(GetComparisonDecisionInterface.class));
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
*/
GetComparisonDecisionCallParameter comparisonDecisionCallParameter = new GetComparisonDecisionCallParameter();
comparisonDecisionCallParameter.setSecurityToken(token);
comparisonDecisionCallParameter.setComparisonApplication(equinitiApp);
GetComparisonDecisionResponseParameter eqDescn = comparison.getComparisonDecision(comparisonDecisionCallParameter);
在这一点上我已经没有想法了。 cxf 文档非常简洁。
【问题讨论】:
-
对于 CXF @Feature-Annotation:
@Features(features = "org.apache.cxf.feature.LoggingFeature")。 -
那行得通。但有趣的是,使用 wdsl2java 您生成了一个类,然后需要手动编辑以添加记录所需的 @Features 注释。部分违背了生成 SOAP 客户端代码的目的。可惜我无法将评论标记为正确答案...