我有一个包含敏感信息(信用卡信息、电话号码等)的类。
我希望能够将此类传递给 log4j,但让它隐藏某些信息。
如果我有一个具有 getPhoneNumber、getCreditCardNumber 方法的 UserInformation 类,我将如何自定义 log4j 或此类,以便它正确地隐藏数字。
我希望信用卡号输出为 xxxx-xxxx-xxxx-1234,电话号码输出为 xxxx-xxx-xxx,因为它们分别是 1234-1234-1234-1234 和 1234-567- 890
谢谢
最佳答案
您可以尝试通过编写一个隐藏这些模式的自定义日志记录格式化程序来实现这一点。但我认为这有点狡猾……因为有人可能会通过调整记录器配置文件等无意或有意地规避这一点。
我认为最好执行以下操作之一,具体取决于您如何组装日志消息:
- 在您的代码中更改记录器调用,以使用替代的 getter 方法在隐藏敏感字段的
UserInformation
上组装日志消息。 - 更改
UserInformation
上的toString
方法以隐藏详细信息。
关于java - 为敏感数据自定义 log4j 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2817956/