加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Logback屏蔽密码?

发布时间:2020-12-15 02:49:50 所属栏目:Java 来源:网络整理
导读:我们目前通常会记录进出系统的所有 XML文档,其中一些文档包含明确的密码.我们希望能够配置执行此操作的logback logger / appender来执行某些模式匹配或类似操作,如果它检测到存在替换它的密码(最有可能使用星号).注意我们不想过滤掉日志条目,我们想要屏蔽它
我们目前通常会记录进出系统的所有 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用户邮件列表上大喊大叫.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读