Lombok Conditional ToString.Include



Lombok支持@ToString。包含允许在打印Object或属性时自定义属性格式。我正在考虑在日志记录到日志文件时使用这个特性来屏蔽PII数据。我仍然想包括在日志字段,但我需要它被掩盖。但是,添加此注释总是会掩盖该字段。有没有办法让这个变成条件句?我遇到的问题是,在调试时,字段被屏蔽。我真的希望该字段只在我指示它应该被屏蔽时才被屏蔽,即当记录到日志文件时。

在尝试了这个之后,我对它的工作方式很满意。我主要担心的是,在调试时将失去查看属性值的能力。当然,情况并非如此。当我记录对象时,它为对象应用toString函数并屏蔽我想要屏蔽的属性。但是我仍然可以查看对象中的属性值。

作为一个例子,如果我设置emailAddress= testemail@gmail.com,我可以打印一个emailAddress对象,它将打印emailAddress (emailAddress=t********@gmail.com)

@Builder
@Getter
@EqualsAndHashCode
@ToString
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public final class EmailAddress {
private final String emailAddress;
// replace all characters after the first character with a *
// up to the @ symbol
@ToString.Include(name = "emailAddress")
private String fieldMasker() {
return emailAddress.replaceAll("(?<=.{1}).(?=[^@]*?@)", "*");
}
}

最新更新