在Spring Boot中实现日志记录的脱敏,可以通过自定义日志格式化器来对敏感信息进行变形或者替换。以下是一个简单的实现示例:
import ch.qos.logback.classic.pattern.MessageConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
 
public class SensitiveDataConverter extends MessageConverter {
    private String[] sensitiveWords = new String[]{"password", "secret", "token"};
 
    @Override
    public String convert(ILoggingEvent event) {
        String message = event.getFormattedMessage();
        for (String word : sensitiveWords) {
            message = message.replaceAll(word, "******");
        }
        return message;
    }
}然后在logback的配置文件中(例如logback-spring.xml),使用自定义的转换器:
<configuration>
    <conversionRule conversionWord="msg" converterClass="com.yourpackage.SensitiveDataConverter" />
 
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="info">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>在上述配置中,<conversionRule>标签定义了一个转换词msg,它关联到了我们自定义的转换器SensitiveDataConverter。在日志的pattern中使用%msg就可以应用这个转换。这样,所有日志消息中含有定义的敏感词的部分都会被替换成******。