Logback:选择性地屏蔽语句和谨慎模式

时间:2013-08-03 13:12:26

标签: java logging log4j logback

我们正在使用Logback的%replace功能来屏蔽日志文件中的安全敏感信息,例如密码和安全令牌。

但是,只有10%的针对特定appender的日志语句需要屏蔽。对于剩余的90%,运行替换正则表达式是一个多余的开销。

我们考虑过使用SEC_SENSITIVE等标记来标记敏感语句,并使用过滤器来限制运行哪些appender。这需要为单个记录器设置2个互斥的appender。

Logger
  |---- Appender 1 (only if marker != SEC_SENSITIVE, no replacement)
  |---- Appender 2 (only if marker == SEC_SENSITIVE, with replacement)

两个appender都写入同一个文件。

到此为止,我有几个问题:

  1. 这个设置有意义吗?或者有更简单的方法吗? (理想情况下是OOTB,没有自定义代码)
  2. 有关prudent选项的文档和StackOverflow问题强调了它对多个JVM设置的使用。在我们的示例中,所有日志记录输出都将来自单个JVM。是否仍然需要启用此选项?或者Logback是否足够聪明地将2个本地appenders 输出到同一个文件?
  3. 这是否有OOTB过滤器?我只找到了MarkerFilter,但它只是TurboFilter
  4. 现在是否支持条件替换OOTB(如建议in this answer)?
  5. 环境:使用Pax Logging 1.7.0的Apache ServiceMix上的OSGi。

1 个答案:

答案 0 :(得分:0)

是的,它会起作用。不要忘记additivity = false。

或者,在根目录停止问题并且在对象的toString中编辑任何敏感字段会不会更容易?

有时敏感案例不容易被发现,例如令牌或SAML主题,这些也应该从日志中删除。