使用 Logback 屏蔽密码?

2024-04-01

目前,我们一般都会记录进出系统的所有 XML 文档,其中一些文档包含明文密码。我们希望能够配置执行此操作的 logback 记录器/附加程序来进行一些模式匹配或类似操作,并且如果它检测到存在密码则将其替换(最有可能使用星号)。请注意,我们不想过滤掉日志条目,我们想屏蔽它的一部分。我希望得到有关如何使用 logback 完成此操作的建议。谢谢。


logback版本0.9.27引入更换能力 http://logback.qos.ch/manual/layouts.html#replace。替换支持正则表达式。例如,如果记录的消息是“userid=alice, pswd='my Secret'”,并且输出模式为

  "%d [%t] $logger - %msg%n",

你只需将模式修改为

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

请注意,上面使用了选项引用 http://logback.qos.ch/manual/layouts.html#cwOptions.

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

为了获得出色的性能,您还可以将日志语句标记为 CONFIDENTIAL,并指示 %replace 仅对标记为 CONFIDENTIAL 的日志语句执行替换。例子,

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Logback 屏蔽密码? 的相关文章

随机推荐