Spring Integration日志记录包含敏感信息

时间:2014-07-16 12:28:11

标签: spring-integration

我最近将si添加到我的项目中并对此非常满意。我的日志记录存在问题。我正在使用logback,一切正常;但是,我有敏感信息流经系统,无法“按原样”记录。在记录之前必须拦截和屏蔽某些数据。如果我将日志级别配置为低于WARN,那么我会看到此敏感信息。筛选所有绑定日志的邮件的最佳方法是什么?我正在使用带有服务激活器的入站网关用于si服务器。我正在为si客户端使用异步出站网关。

2 个答案:

答案 0 :(得分:0)

不清楚logging与Spring Integration的关系。

对我来说似乎足以为您的日志记录框架编写一些自定义Appender

从另一方面,您可以filter消息,然后在<filter>之后使用SI <logging-channel-adapter><filter>进行记录。

但在这种情况下,您无法使用代码中的logger.debug()(或类似代码):您总是应将消息发送到channel进行记录。

请进一步说明您希望过滤(或屏蔽)日志消息的位置和方式。

答案 1 :(得分:0)

使用logbackslf4j我用它来屏蔽si消息......

public class LoggingFilter extends TurboFilter {
    private static final Marker secured = MarkerFactory.getMarker("secured");

    @Override
    public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable t) {
        if (format != null && logger.getName().startsWith("org.springframework.integration")) {
            boolean isSecured = marker != null && (marker.equals(secured) || marker.contains(secured));
            if (isSecured) {
                return NEUTRAL;
            } else {
                if (marker == null) {
                    marker = secured;
                } else {
                    marker.add(secured);
                }
                String message = MessageFormatter.arrayFormat(format, params).getMessage();
                //TODO: mask message here.
                logger.log(marker, logger.getName(), toLocationAwareLoggerInteger(level), message, null, t);
                return DENY;
            }
        } else {
            return NEUTRAL;
        }
    }
}