对于OWASP ESAPI,将忽略按包名过滤的log4j记录器

时间:2015-03-30 17:05:25

标签: java logging log4j

我目前为log4j配置了一个XML配置文件,该文件有两个appender,“file”和“email”。这两个都正常工作,但我不想发送电子邮件来发送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”,但所有这些都未能以完全相同的方式工作。

我唯一可以做的就是停止发送ESAPI错误的邮件是从根记录器中删除“email”appender-ref,我不想这样做。有谁知道这里发生了什么?

2 个答案:

答案 0 :(得分:0)

我意识到ESAPI会在类包中添加您在esapi.properties的属性Logger.ApplicationName中加上&#34;:&#34;的名称。例如在我的情况下,如果我有一个类mypackage.MyClass ESAPI打印:ExampleApplication:mypackage.MyClass - [EVENT SUCCESS Anonymous:null @ unknown ....

我需要输入我的log4j.xml

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

我不知道它是否可能是同一个问题,因为你的问题不属于所有者类,我希望这可以帮助你。

答案 1 :(得分:0)

事实证明,ESAPI正在使用一种完全不同的方案来生成类别名称而不是其他应用程序。在疯狂地调试ESAPI和Log4J代码之后,我确定ESAPI生成的错误有一个“IntrusionException”类别,因此正确的记录器将是:

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