当前位置: 首页 > 知识库问答 >
问题:

OWASP ESAPI忽略按包名过滤的log4j记录器

长孙雅志
2023-03-14

我目前有log4j配置了一个XML配置文件,它有两个附录,“文件”和“电子邮件”。这两个都正常工作,但是我不想发送电子邮件给ESAPI内部产生的错误,所以我在XML文件中放入了一个新的记录器。记录器的完整列表是:

<logger name="com.companyname" additivity="false">
    <level value="INFO" />
    <appender-ref ref="file" />
    <appender-ref ref="email" />
</logger>

<logger name="org.hibernate" additivity="false">
    <level value="ERROR" />
    <appender-ref ref="file" />
    <appender-ref ref="email" />
</logger>

<logger name="org.springframework" additivity="false">
    <level value="ERROR" />
    <appender-ref ref="file" />
    <appender-ref ref="email" />
</logger>

<logger name="org.owasp" additivity="false">
    <level value="ERROR" />
    <appender-ref ref="file" />
</logger>

<root>
    <level value="ERROR" />
    <appender-ref ref="file" />
    <appender-ref ref="email" />
</root>

然而,这不起作用。我仍然会收到ESAPI中生成的错误的电子邮件(特别是org.owasp.esapi.reference.Log4JLogger类)。

我还尝试过使用“org.owasp.esapi”、“org.owasp.esapi.reference”、“org.owasp.esapi.reference.Log4JLogger”甚至“org”,但所有这些都无法以完全相同的方式工作。

我唯一能做的就是从根记录器中删除“电子邮件”appender-ref,这是我不想做的。有人知道这是怎么回事吗?

共有2个答案

邵展
2023-03-14

事实证明,ESAPI使用了一个完全不同的方案来生成其类别名称,而不是应用程序的其余部分。在疯狂调试ESAPI和Log4J代码后,我确定ESAPI产生的错误具有“入侵异常”类别,因此正确的记录器应该是:

<logger name="org.owasp" additivity="false">
    <level value="ERROR" />
    <appender-ref ref="file" />
</logger>
苏昊英
2023-03-14

我意识到ESAPI将您在属性记录器中输入的名称添加到类包中。esapi的应用程序名称。属性加“:”。例如,在我的例子中,如果我有一个类mypackage。MyClass ESAPI打印:示例应用程序:mypackage。MyClass-[事件成功匿名:null@unknown ....

我需要输入我的log4j。xml

<logger name="ExampleApplication:mypackage.MyClass" additivity="false">
    <level value="INFO" />
    <appender-ref ref="file" />
</logger>

我不知道它是否可能是相同的问题,因为您的问题不在所有者类中,我希望这可以帮助您。

 类似资料:
  • 我们的web应用程序在tomcat 9容器中运行,并使用Log4j 2.13。3作为测井系统。 web应用程序包括org.apache.xmlgraphics:fop 2.3,它使用apache共享日志记录(我们设置中的版本为1.2,而不是fop中最初使用的1.0.4)。 这个组合已经使用log4-jcl、共享日志记录桥运行了多年,所有共享日志记录输出都正确地进入了log4j配置的文件。配置相当简

  • 附加器 和3个记录器: 记录器1 null

  • 问题内容: 以下是来自pylint docs的内容: 但是我没有让目录部分起作用的运气。 我有一个名为migrations的目录,其中有django-south迁移文件。当我输入–ignore = migrations时,它仍然不断向我提供migrations目录内文件中的错误/警告。 难道这不适用于目录? 如果我什至可以使用regexp来匹配被忽略的文件,它将正常工作,因为django- sou

  • 问题内容: 以下代码是从文档中复制的。我应该能够查看所有信息日志。但是我没有。即使将setLevel设置为INFO,我也只能看到警告和以上内容。 为什么会这样呢?: 输出: 信息和调试消息到哪里去了? 问题答案: 更换线 与 它应该可以按预期工作。如果您不使用任何处理程序来配置日志记录(如您的帖子中所示,您只为记录器配置一个级别,但在任何地方都没有处理程序),则将获得一个“不得已使用”的内部处理程

  • 我有一个log4j配置文件,其中有两个记录器和两个特殊的附加器。该文件的外观如下所示: 这个班看起来是这样的 这样做的结果是: main_logger.log [忽略log4j模式布局]您好 [忽略log4j模式布局]世界! log_error.log “忽略log4j模式布局”世界! 我的想法只是将我想要的事件记录在分开的文件中,但是当我调用记录器时,输出在这两个文件中,我的意思是在为appen

  • 问题内容: 我正在使用日志记录()记录消息。 在1个单一模块中,我正在调试级别记录消息; 其中一些调试消息来自于其他消息; 我希望能够基于它们是来自a还是来自b来启用/禁用日志记录; 我猜想我必须使用日志记录的过滤机制。 有人可以告诉我下面的代码如何被执行我想要的工作吗? 如果将这个简单的示例扩展到更多模块和每个模块更多的功能,我会担心很多记录器; 是否可以将每个模块的记录器数量限制为1个?请注意