Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Lombok logger记录时,是否有方法屏蔽类值?_Java_Spring_Logging_Lombok - Fatal编程技术网

Java 使用Lombok logger记录时,是否有方法屏蔽类值?

Java 使用Lombok logger记录时,是否有方法屏蔽类值?,java,spring,logging,lombok,Java,Spring,Logging,Lombok,我想知道是否有一种通用方法可以在记录时屏蔽特定的类字段值?我用的是龙目记录器 例如: @ToString(includeFieldNames = true) public class Account{ String name = ""; String accountNumber = ""; String code = ""; } 在记录toString()时,我希望能够以通用的方式屏蔽该值(我知道我可以重写toString方法,但这需要针对每个类专门完成)您可以创建一个

我想知道是否有一种通用方法可以在记录时屏蔽特定的类字段值?我用的是龙目记录器

例如:

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

在记录toString()时,我希望能够以通用的方式屏蔽该值(我知道我可以重写toString方法,但这需要针对每个类专门完成)

您可以创建一个专用类来保存需要混淆的对象

@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=“xxxxx 56789”
替换
accountNumber=“0123456789”
的值。您可以创建一个专用类,用于保存需要混淆的对象

@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=“xxxxx 56789”
替换
accountNumber=“0123456789”
的值。对于您的用例,您可以


对于您的用例,您可以


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

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

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

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

谢谢,我知道这个选项,但我不想从日志中完全删除它,我只想屏蔽它。@SamP。我没听懂。您能提供一个所需输出的示例吗?字符串应显示为已屏蔽的accountNumber(可能是屏蔽它的不同方式),例如:name=test,accountNumber=xxxxx 6789,code=1234谢谢,我知道这个选项,但我不想从日志中完全删除它,我只想屏蔽它。@SamP。我没听懂。您能提供所需输出的示例吗?字符串应显示为已屏蔽的accountNumber(可能是屏蔽它的不同方式),例如:name=test,accountNumber=XXXXX 6789,code=1234