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