java - 在日志记录期间屏蔽 Java 中的某些字符串属性?

标签 java logging masking

有没有一种方法可以屏蔽类的某些字符串变量,如密码等,这将在日志记录期间阻止?就像以这种方式覆盖 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/

相关文章:

python - 处理并重新引发 python 日志记录模块抛出的异常

用于图像处理掩蔽任务的 Java 库

javascript - 如何使 Angular 掩码适用于各种信用卡?

iOS CGAffineTransform 与 mask

java - 属性未从 View 发送到 Controller

python - 将标准输出重定向到 Python 中的记录器

java - 网络应用程序。比。桌面应用程序(Java Swing 应用程序)

logging - 使用 customErrors 模式 ="on"时,如何在 asp.net mvc 3 中记录没有 Controller 的异常?

java - 如何使用 ant 构建 jar 文件?

Java 等同于 C++ 加密