Lombok 条件 ToString.Include

Mik*_*ike 3 java lombok

Lombok 支持 @ToString.Include 以允许在打印对象或属性时自定义属性格式。我正在考虑在记录到日志文件时使用此功能来屏蔽 PII 数据。我仍然想将该字段包含在日志中,但我需要将其屏蔽。但是,添加此注释始终会掩盖该字段。有没有办法使它成为条件?我遇到的问题是,在调试时,该字段被屏蔽。我真的希望仅当我指示应该屏蔽该字段时(即记录到日志文件时)才屏蔽该字段。

Mik*_*ike 5

经过尝试后,我对它的工作方式感到满意。我主要担心的是在调试时我将无法查看属性值。当然事实并非如此。当我记录对象时,它会为该对象应用 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}).(?=[^@]*?@)", "*");
    }
}
Run Code Online (Sandbox Code Playgroud)