可以通过设置evaluatorClass来修改触发条件
具有实现的类的名称的属性
TriggeringEventEvaluator,使用
TriggeringEventEvaluator的实例或嵌套triggeringPolicy
指定类实现TriggeringEventEvaluator的元素.
The triggering criteria can be modified by setting the evaluatorClass
property with the name of a class implementing
TriggeringEventEvaluator, setting the evaluator property with an
instance of TriggeringEventEvaluator or nesting a triggeringPolicy
element where the specified class implements TriggeringEventEvaluator.
基本上,我可以使用嵌套的triggeringPolicy元素来模拟评估程序的行为.另一个优点是,我可以将参数传递给triggeringPolicy元素.
Basically, I can use a nested triggeringPolicy element to emulate the behavior of an evaluator. The added advantage is that, I can pass arguments to the triggeringPolicy element.
我有一个用例,每n条消息发送一次电子邮件摘要.为此,我使用了以下TriggeringPolicy:
I had a use case of sending email digest for every n - messages. For that I used the following TriggeringPolicy:
package org.email;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.TriggeringEventEvaluator;
public class MyEvaluator implements TriggeringEventEvaluator {
private volatile int num = 1;
private int quotient = 1;
@Override
public boolean isTriggeringEvent(LoggingEvent event) {
return num++ % quotient == 0;
}
public void setQuotient(int quotient) {
this.quotient = quotient;
}
}
我的log4j.xml配置如下所示,该配置每两个日志事件发送一封邮件:
My log4j.xml configuration, which sends one mail for every two log events is given below:
<appender name="ErrorEmailAppender" class="org.apache.log4j.net.SMTPAppender">
<param name="SMTPHost" value="myHost" />
<param name="From" value="xxxxx@yyy.com" />
<param name="To" value="xxxxx@yyy.com" />
<param name="Subject" value="Log of messages" />
<triggeringPolicy class="org.email.MyEvaluator">
<param name="quotient" value="2" />
</triggeringPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t %m%n"/>
</layout>
</appender>
希望这会有所帮助!
这篇关于Log4j.xml注入评估程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!