我们应用程序中的一些异常消息包含不应进入错误日志的凭据/私钥或其他敏感信息。我想在写入之前过滤记录的消息的内容,以便可以用 [redacted] 或某些此类文本值替换已知的敏感值和/或模式。几次搜索都没有发现任何东西。有没有办法做到这一点并以通用方式将其应用于所有配置的附加程序?
我不想通过知道所有这些异常可能发生在哪里并为此编写异常处理程序来进行过滤。我们的代码不会抛出异常,因此“不这样做”不是一种选择。
很简单:首先不要把它们放在那里。
当然,您可以编写一些正则表达式和启发式等,并在您的日志上定期运行它们 - 所有这些都容易失败或破坏。
并且没有任何理由在日志中包含密码和私钥
我希望(但没有尝试过)您可以BufferingAppender
根据此处的示例编写一个,并可以使用该方法override protected void Append(LoggingEvent loggingEvent)
更改 loggingEvent 以删除敏感信息。
还有另一种选择。
由于“违规”代码是第三方库,因此您不能简单地“从异常中删除信息”是正确的。
但是,您可以创建一个外观类来使用相同的 API 调用该库,然后将错误处理/编辑添加到新类中。然后只需在整个代码中使用该类代替原始库即可。