有没有办法在使用Lombok记录器记录时屏蔽类值?

时间:2017-07-19 14:48:02

标签: java spring logging lombok

我想知道在记录时是否有一种通用的方法来屏蔽特定的类字段值?我正在使用Lombok记录器。

例如:

@ToString(includeFieldNames = true)
public class Account{
    String name = "";
    String accountNumber = "";
    String code = "";
}

当记录toString()时,我希望能够以泛型的方式掩盖值(我知道我可以覆盖toString方法但是需要特别针对每个类完成) )

3 个答案:

答案 0 :(得分:1)

您可以创建一个专用类,其中包含您需要进行模糊处理的对象。

@ToString(callSuper = true)
public class Account {
    String name = "";
    MaskedString accountNumber = "";
    String code = "";
}

@Getter
@RequiredArgsConstructor
class MaskedString {
    private String value; 

    @Override
    public String toString() {
        new StringBuilder(value)
            .replace(0, 5, "XXXXX")
            .toString();
    }
}

这会将accountNumber = "0123456789"的值替换为accountNumber = "XXXXX56789"

答案 1 :(得分:1)

对于您的用例,您可以exclude the field from the toString method

@ToString(exclude="accountNumber")
public class Account {
    String name = "";
    String accountNumber= "";
    String code = "";
}

答案 2 :(得分:0)

Lombok现在支持使用注释从toString方法中排除字段

@ToString
public class Account {
    String name = "";
    @ToString.Exclude
    String accountNumber= "";
    String code = "";
}