Apache CXF LoggingInInterceptor 已弃用 - 使用什么代替?
Apache CXF LoggingInInterceptor is deprecated - what to use instead?
我正在使用 Apache CXF Spring 在 cxf-spring-boot-starter-jaxws
3.2.7 版插件的帮助下启动。
我的意图是自定义 LoggingInterceptors,但是当我创建以下内容时 class:
public class CustomLoggingInInterceptor extends org.apache.cxf.interceptor.LoggingInInterceptor {}
但我的 IDE 删除了 LoggingInInterceptor 抱怨它已被弃用的解释
use logging module rt/features/logging instead
那么应该如何使用此模块自定义日志记录拦截器?
此消息告诉您的是使用 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());
从旧的 cxf 日志记录更新到新的 cxf 日志记录基本上需要 4 件事 (rt/features/logging)。
首先,设置日志功能:
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 class,您可以在其中使用自己的字符串操作逻辑来屏蔽所需信息。
如果有效请告诉我!
当你有这个在别处提到的依赖时:
<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);
这个 class 的新导入是:
import org.apache.cxf.ext.logging.LoggingInInterceptor;
import org.apache.cxf.ext.logging.LoggingOutInterceptor;
可以在 org.apache.cxf:cxf-rt-features-logging
依赖项中找到。
code snippets请参考此问题。
我正在使用 Apache CXF Spring 在 cxf-spring-boot-starter-jaxws
3.2.7 版插件的帮助下启动。
我的意图是自定义 LoggingInterceptors,但是当我创建以下内容时 class:
public class CustomLoggingInInterceptor extends org.apache.cxf.interceptor.LoggingInInterceptor {}
但我的 IDE 删除了 LoggingInInterceptor 抱怨它已被弃用的解释
use logging module rt/features/logging instead
那么应该如何使用此模块自定义日志记录拦截器?
此消息告诉您的是使用 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());
从旧的 cxf 日志记录更新到新的 cxf 日志记录基本上需要 4 件事 (rt/features/logging)。
首先,设置日志功能:
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 class,您可以在其中使用自己的字符串操作逻辑来屏蔽所需信息。
如果有效请告诉我!
当你有这个在别处提到的依赖时:
<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);
这个 class 的新导入是:
import org.apache.cxf.ext.logging.LoggingInInterceptor;
import org.apache.cxf.ext.logging.LoggingOutInterceptor;
可以在 org.apache.cxf:cxf-rt-features-logging
依赖项中找到。
code snippets请参考此问题。