该接口(interface)由 log4j 中的 SMTPAppender 类使用。 它有一个返回状态的方法(是否触发电子邮件警报)
问题是 我想向 TriggeringEventEvaluator 添加一些功能。 这需要在 TriggeringEventEvaluator 的配置中指定一些额外的字段。
如何将这些字段从 log4j 配置传递到 TriggeringEventEvaluator。 我知道 log4j 调用字段的 setter 方法,但是如何为 TriggeringEventEvaluator 指定字段
最佳答案
在 SMTPAppender 元素内定义 TriggeringPolicy 元素。 TriggeringPolicy 元素的类将为 org.apache.log4j.rolling.FilterBasedTriggeringPolicy。
在 TriggeringPolicy 元素内,定义一个类为 org.apache.log4j.filter.ExpressionFilter 的“filter”元素。
然后,您可以使用所需的任何事件字段(并且正则表达式支持使用“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>
关于java - 扩展 TriggeringEventEvaluator (log4j) 并在配置中为其提供属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6186249/