我在版本3.2.7的cxf-spring-boot-starter-jaxws
插件的帮助下,将Apache CXF与Spring Boot结合使用。
我的意图是自定义LoggingInterceptor,但是当我创建以下类时:
public class CustomLoggingInInterceptor extends org.apache.cxf.interceptor.LoggingInInterceptor {}
但是我的IDE删除了LoggingInInterceptor并抱怨说它已被解释弃用
改为使用日志记录模块rt / features / logging
那么如何使用该模块自定义日志拦截器呢?
答案 0 :(得分:3)
此消息告诉您的是使用Apache CXF Advanced logging feature
模块。
其依赖项为(最新版本)
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-logging</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
在内部,您会发现类似的org.apache.cxf.ext.logging.LoggingInInterceptor
(link)
我不是CXF用户,但是我想您必须与JaxWsProxyFactoryBean
进行交互。
请记住,所有CXF模块都需要使用相同的版本。
抓住它后,就可以
factory.getInInterceptors().add(new MyCustomInterceptor());
答案 1 :(得分:3)
从旧的到新的cxf日志记录(rt / features / logging)基本上需要4件事。
首先,设置日志记录功能:
final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setFeatures(Collections.singletonList(new CustomLoggingFeature()));
您不再需要拦截器(如果使用了拦截器,请将其删除):
factory.getInInterceptors().add(new CustomMaskedLoggingInInterceptor());
factory.getOutInterceptors().add(new CustomMaskedLoggingOutInterceptor());
第二,创建您的LoggingFeature:
public class CustomLoggingFeature extends org.apache.cxf.ext.logging.LoggingFeature {
public CustomLoggingFeature() {
super();
this.setSender(new CustomEventLogSender());
}
}
第三,创建您的EventLogSender:
public class CustomEventLogSender extends Slf4jVerboseEventSender {
@Override
protected String getLogMessage(LogEvent event) {
String logMessage = super.getLogMessage(event);
return CustomMasker.mask(logMessage);
}
}
第四,创建一个CustomMasker类,您在其中拥有自己的字符串操作逻辑以掩盖所需的信息。
让我知道它是否有效!
答案 2 :(得分:0)
当您在其他地方提到此依赖项时:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-logging</artifactId>
<version>${org.apache.cxf.version}</version>
</dependency>
,当您使用JaxWsProxyFactoryBean
时,可以配置该工厂,例如像这样:
LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
loggingFeature.setVerbose(true);
loggingFeature.setLogMultipart(true);
factory.getFeatures().add(loggingFeature);