Java 为敏感数据定制log4j日志记录
我有一个包含敏感信息(信用卡信息、电话号码等)的类 我希望能够将这个类传递给log4j,但是让它隐藏某些信息 如果我有一个类UserInformation,它包含getPhoneNumber、getCreditCardNumber方法,我将如何自定义log4j或这个类,以便它正确地隐藏这些数字 我希望信用卡号输出为xxxx-xxxx-xxxx-1234,电话号码输出为xxxx-xxx-xxx,因为它们是1234-1234-1234-1234和1234-567-890Java 为敏感数据定制log4j日志记录,java,log4j,Java,Log4j,我有一个包含敏感信息(信用卡信息、电话号码等)的类 我希望能够将这个类传递给log4j,但是让它隐藏某些信息 如果我有一个类UserInformation,它包含getPhoneNumber、getCreditCardNumber方法,我将如何自定义log4j或这个类,以便它正确地隐藏这些数字 我希望信用卡号输出为xxxx-xxxx-xxxx-1234,电话号码输出为xxxx-xxx-xxx,因为它们是1234-1234-1234-1234和1234-567-890 谢谢您可以尝试通过编写自定义
谢谢您可以尝试通过编写自定义日志记录格式化程序来实现这一点,该格式化程序可以隐藏这些模式。但我认为这有点狡猾。。。因为有人可能会意外或故意通过调整记录器配置文件等来规避此问题 我认为最好执行以下操作之一,具体取决于您组装日志消息的方式:
- 更改代码中的记录器调用,以使用
上的替代getter方法组合日志消息,该方法会隐藏敏感字段UserInformation
- 将
上的UserInformation
方法更改为隐藏详细信息toString
您还可以在每次调用时尝试确定是否要返回完整数据或模糊版本-这将增加相当多的开销,并且可能非常难以调试。我将为这些字段编写模糊格式设置程序,并使用它写入日志文件 我还想问,为什么要继续使用字符串原语而不是可以封装适当行为的对象