6

在我当前的项目中,我使用的是 Maven 和 Spring。我目前正在使用 SLF4J 记录器来记录服务。取而代之的是,我想使用 OWASP-ESAPI 记录器。我不想使用OWASP-ESAPI安全性,只是日志服务。OWASP-ESAPI任何人都可以通过以最小的努力替换 slf4j 记录器来指导我如何使用记录器吗?我尝试了很多谷歌搜索,但没有任何帮助。我将非常感谢一些链接以获取有关OWASP-ESAPI记录器的知识。

4

2 回答 2

5

重构您的代码以删除 slf4j 是一个可怕的解决方案,因为这样您就失去了将 JUL、JCL、LOG4J 流量捕获到一个通用日志漏斗中的能力。先前的反应是不好的建议。

  1. 您可以启用 ESAPI 以使用 JUL 日志记录,然后通过在 SLF4J 上使用 JUL,重新捕获该日志流量并路由到其他记录器(即 log4j 或 logback)。为此,在 ESAPI.properties 中: ESAPI.Logger=org.owasp.esapi.reference.JavaLogFactory

  2. 另一种选择是通过 ESAPI 记录器接口构建 SLF4J 记录器代理。我认为在这种情况下,您失去的功能多于获得的功能。

于 2015-09-02T04:22:09.517 回答
1

需要注意的关键是 ESAPI 仅用于 log4j 或 commons java.util 日志记录。我假设log4j。

第 1 步:从类路径中删除 slf4j 库。如果您使用的是 IDE,这应该“圣诞树”您的应用程序并告诉您必须更改的所有内容。

第 2 步:将 esapi 添加到类路径

第 3 步:手动将所有 slf4j 日志记录调用转换为新的 ESAPI 对应项。您将像这样获取对 esapi 记录器的引用:

Logger logger = ESAPI.getLogger("my.foo.class.Foo");

根据提供的信息,这非常简单。

注意:Log4j 不支持 slfj 支持的某些格式调用。这将导致您要么手动重新创建输入,要么将所有这些实例推迟到以后,然后仍然使用 slf4j,但只是使用[MessageFormatter][1]传递日志输入。

于 2014-06-25T22:27:48.860 回答