我无法在格式化日志消息之前对其进行拦截。因为我必须在格式化之前屏蔽参数。
有什么帮助会有用吗?
我已经尝试过使用 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;
}
在格式化消息之前,我们是否有任何能力来拦截消息?