我最近将si添加到我的项目中并对此非常满意。我的日志记录存在问题。我正在使用logback,一切正常;但是,我有敏感信息流经系统,无法“按原样”记录。在记录之前必须拦截和屏蔽某些数据。如果我将日志级别配置为低于WARN,那么我会看到此敏感信息。筛选所有绑定日志的邮件的最佳方法是什么?我正在使用带有服务激活器的入站网关用于si服务器。我正在为si客户端使用异步出站网关。
答案 0 :(得分:0)
不清楚logging
与Spring Integration的关系。
对我来说似乎足以为您的日志记录框架编写一些自定义Appender
。
从另一方面,您可以filter
消息,然后在<filter>
之后使用SI <logging-channel-adapter>
和<filter>
进行记录。
但在这种情况下,您无法使用代码中的logger.debug()
(或类似代码):您总是应将消息发送到channel
进行记录。
请进一步说明您希望过滤(或屏蔽)日志消息的位置和方式。
答案 1 :(得分:0)
使用logback
和slf4j
我用它来屏蔽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;
}
}
}