有没有一种方法可以屏蔽类的某些字符串变量,如密码等,这将在日志记录期间阻止?就像以这种方式覆盖 toString()
方法一样,它不会在日志中打印。
例如,我们有一个具有以下字段的 Employee 类:
public class Employee {
private String username;
**private String password; //mask this field**
private String city;
}
在记录期间
LOGGER.INFO("打印对象:"+employee);
在日志记录中,我试图打印整个对象,这里是 Employee,我的要求是它根本不打印出屏蔽字段、密码,而其余字段的日志记录是很好。
最佳答案
第一个明显的选择是覆盖 toString(),例如:
public class Employee {
private String username;
private String password;
private String city;
@Override
public String toString() {
return "username=" + username + " city=" + city;
}
public static void main(String[] args) {
System.out.println(new Employee().toString());
}
}
例如,您还可以从日志中替换密码字符串
String maskedPassword = s.replaceAll("password=[^&]*", "password=***");
在你使用 Jersey 时你可以添加logging filter有了这样的替换。
关于java - 在日志记录期间屏蔽 Java 中的某些字符串属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485065/