【问题标题】:apache cxf LoggingFeature mask senstive informationapache cxf LoggingFeature 掩码敏感信息
【发布时间】:2019-08-11 02:39:35
【问题描述】:

我正在使用日志记录功能在 Spring 启动时将消息登录/注销到我的 cxf 休息服务器。同样使用相同的方法来记录由 cxf WebClient 发起的向外 Rest API 连接。

我遇到了一些我不想登录到日志文件的参数。对于我的情况,完全删除它们或掩盖它们就足够了。

我在互联网上发现以前(现在已弃用)的 LoginIntercepter 有转换操作来修改日志条目。我无法找到一种解决方案来屏蔽/截断与 LoggingFeature 相关的日志条目。

任何帮助将不胜感激

服务器日志功能的当前配置如下。

factory.setProviders(providers);
LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
loggingFeature.setLogBinary(false);
loggingFeature.setLogMultipart(false);
factory.getFeatures().add(loggingFeature);
Server server = factory.create();

网页客户端配置如下

 LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
WebClient client = WebClient.create(url, Collections.singletonList(new JacksonJsonProvider()),
    Arrays.asList(loggingFeature), null);

【问题讨论】:

标签: java logging cxf


【解决方案1】:

要更改日志消息,您可以...

编写一个自定义 LogSender 并将其设置在 LoggingFeature 上以进行自定义 记录。所有元数据都可以从 LogEvent 类访问[ed]。

(来源: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)并通过相应的“记录器配置”来完成。 (see here)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多