我需要在密码显示在日志文件中之前屏蔽密码。
密码的格式为“password”:“pswd123”。它只是字母数字。屏蔽后,它将是“密码”:“ * ”
在我的自定义Pattern类中,我有以下reg表达式,但它没有被拾取。任何想法应该如何? THX
@Override
public String format(LoggingEvent event) {
String msg = super.format(event);
// regexp not being picked up
msg = msg.replace("\"password\":\"[^\"]*", "password:\"***\"");
return msg;
}
答案 0 :(得分:4)
String.replace()
需要CharSequence
,而不是正则表达式。您可能正在寻找replaceAll()
或replaceFirst()
。
答案 1 :(得分:0)
使用.replaceFirst()
,.replace()
仅替换子字符串
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您希望它只显示3 *这很容易,如果您希望它为密码中的每个字符显示1 *,那就更难了。
Msg = Regex.Replace(Msg, "\"Password\":\"[^\"]+?\"", "\"Password\":\"***\"")
答案 4 :(得分:0)
您是否正在使用log4j或slf4j等任何日志库?这些库具有使用正则表达式“替换字符串”的功能。您可以通过更改日志记录配置文件来全局使用和应用它。您仍然需要提供一个正则表达式,使用正则表达式构建器实用程序(如http://myregexp.com/)并自行构建正则表达式。