问题描述
||
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 && MSG ~= test1 ) || ( logger ~= class2 && MSG like \'TEST2\' )\"/>
</filter>
</triggeringPolicy>
<layout class=\"org.apache.log4j.PatternLayout\">
<param name=\"ConversionPattern\" value=\"%-5p %c{2} - %m%n\"/>
</layout>
</appender>