我正在使用Logging功能在Spring启动时将消息登录/注销到我的cxf rest服务器。类似地,使用该命令记录由cxf WebClient发起的外部Rest API连接。
我遇到了一些我不想登录到日志文件的参数。对于我来说,完全删除它们或掩盖它们就足够了。
我在互联网上发现以前的(现在已贬值的)LoginIntercepter进行了转换操作以修改日志条目。我找不到掩盖/截断LogiringFeature日志条目的解决方案。
任何帮助将不胜感激
服务器的日志记录功能的当前配置如下。
factory.setProviders(providers);
LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
loggingFeature.setLogBinary(false);
loggingFeature.setLogMultipart(false);
factory.getFeatures().add(loggingFeature);
Server server = factory.create();
Web客户端配置如下
LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
WebClient client = WebClient.create(url, Collections.singletonList(new JacksonJsonProvider()),
Arrays.asList(loggingFeature), null);
答案 0 :(得分:0)
要更改日志消息,您可以...
编写自定义LogSender并将其设置在LoggingFeature上以进行自定义 记录。可以从LogEvent类访问所有元数据。
(来源:http://cxf.apache.org/docs/message-logging.html)
使用类似以下的发件人
// ...
import org.apache.cxf.ext.logging.event.LogEvent;
class MyLogEventSender implements org.apache.cxf.ext.logging.event.LogEventSender {
@Override
public void send(LogEvent event) {
event.setPayload(maskSensibleParameters(event.getPayload()));
}
private String maskSensibleParameters(String pIn) {
// here goes the tricky part
// ... but no details on this in your question
// ... here you can stick to "old" LogInterceptor examples
// ... and also to PrettyLoggingFilter.
}
}
(默认)PrettyLoggingFilter给出了一个代码示例。
要(完全)屏蔽(隐藏)起来更容易,并保证更高的性能,它取决于使用的“日志记录框架”(java.util,log4j或slf4j),并通过相应的“记录器配置”来实现。