java – 使用Logback屏蔽密码?

前端之家收集整理的这篇文章主要介绍了java – 使用Logback屏蔽密码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们目前通常会记录进出系统的所有 XML文档,其中一些文档包含明确的密码.我们希望能够配置执行此操作的logback logger / appender来执行某些模式匹配或类似操作,如果它检测到存在替换它的密码(最有可能使用星号).注意我们不想过滤掉日志条目,我们想要屏蔽它的一部分.我很感激有关如何使用logback完成此操作的建议.谢谢.

解决方法

logback版本0.9.27引入了 replacement capability.替换支持正则表达式.例如,如果记录的消息是“userid = alice,pswd =’my secret’”,则输出模式为
"%d [%t] $logger - %msg%n",

你只需将模式修改

"%d [%t] $logger - %replace(%msg){"pswd='.*'","pswd='xxx'"}%n"

注意,上面使用了option quoting.

之前的日志消息将输出为“userid = alice,pswd =’xxx’”

对于超强性能,您还可以将日志语句标记为CONFIDENTIAL,并指示%replace仅对标记为CONFIDENTIAL的日志语句执行替换.例,

Marker confidential = MarkerFactory.getMarker("CONFIDENTIAL");
 logger.info(confidential,"userid={},password='{}'",userid,password);

不幸的是,当前版本的logback还不支持条件替换(基于标记或其他).但是,您可以通过扩展ReplacingCompositeConverter轻松编写自己的替换代码.如果您需要进一步的帮助,请在logback用户邮件列表上大喊大叫.

猜你在找的Java相关文章