在Logback Java格式化日志消息和参数之前对其进行拦截

时间:2019-07-04 14:28:00

标签: java logback

我无法在格式化日志消息之前对其进行拦截。因为我必须在格式化之前屏蔽参数。

有什么帮助会有用吗?

我已经尝试过使用 LayoutWrappingEncoder layout ,但是消息已经在 LoggingEvent 对象中进行了格式化。

尝试过重新登录过滤器,这里也与以前一样,已经格式化了类似的消息。

ILoggingEvent事件对象包含格式化的消息。

@Override
public String doLayout(ILoggingEvent event) {
       return super.doLayout(maskSensitiveLogs(event));
}

private ILoggingEvent maskSensitiveLogs(ILoggingEvent event) {
        LoggingEvent loggingEvent = (LoggingEvent) event;
        Object[] obj = loggingEvent.getArgumentArray();
        if (maskMap.isEmpty() || ArrayUtils.isEmpty(obj)) {
                return event;
        }
        maskMap.forEach((k, v) -> {
                for (int i = 0; i < obj.length; i++) {
                    Matcher matcher = k.matcher(new 
             StringBuilder(obj[i].toString()));
                    while (matcher.find()) {
                        obj[i] = StringUtils.overlay(obj[i].toString(), 
        v.getOverlay(), v.getStartIndex(), v.getEndIndex() + 1);
                    }
                }
       });
       return event;
}

在格式化消息之前,我们是否有任何能力来拦截消息?

0 个答案:

没有答案