我目前为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,我不想这样做。有谁知道这里发生了什么?
答案 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>