扩展TriggeringEventEvaluatorlog4j并在config中为其提供属性

问题描述

|| log4j中的SMTPAppender类使用此接口。 它具有一种返回状态的方法(是否触发电子邮件警报) 问题是 我想为TriggeringEventEvaluator添加一些功能。 这需要在配置中为TriggeringEventEvaluator指定一些额外的字段。 如何将这些字段从log4j配置传递给TriggeringEventEvaluator。 我知道log4j调用字段的setter方法,但是如何为TriggeringEventEvaluator指定字段     

解决方法

        在SMTPAppender元素内定义一个TriggeringPolicy元素。 TriggeringPolicy元素的类为org.apache.log4j.rolling.FilterBasedTriggeringPolicy。 在TriggeringPolicy元素内,定义一个\'filter \'元素,其类为org.apache.log4j.filter.ExpressionFilter。 然后,您可以使用任何所需的事件字段(以及使用\'like \'关键字进行正则表达式支持)以过滤事件。 Chainsaw的开发人员快照中有一个很好的表达式语法教程:http://people.apache.org/~sdeboy 例:
<appender name=\"mail\" class=\"org.apache.log4j.net.SMTPAppender\">
  <param name=\"from\"   value=\"[EMAIL PROTECTED]\" />
  <param name=\"to\" value=\"[EMAIL PROTECTED]\" />
  <param name=\"subject\" value=\"Test message\" />
  <param name=\"SMTPHost\" value=\"localhost\"/>
  <param name=\"sendOnClose\" value=\"true\"/>
  <triggeringPolicy class=\"org.apache.log4j.rolling.FilterBasedTriggeringPolicy\">
    <filter class=\"org.apache.log4j.filter.ExpressionFilter\">
      <param name=\"Expression\" value=\"( LOGGER ~= class1 &amp;&amp; MSG ~= test1 ) || ( logger ~= class2 &amp;&amp; MSG like \'TEST2\' )\"/>
    </filter>
  </triggeringPolicy>
  <layout class=\"org.apache.log4j.PatternLayout\">
    <param name=\"ConversionPattern\" value=\"%-5p %c{2} - %m%n\"/>
  </layout>
</appender>