Java Log4j.xml注入计算器
我的项目使用log4j1.2.17。我已成功地将我的自定义“Evaluator”注入SMTPAppender,使用:Java Log4j.xml注入计算器,java,logging,log4j,Java,Logging,Log4j,我的项目使用log4j1.2.17。我已成功地将我的自定义“Evaluator”注入SMTPAppender,使用: ,但我不知道如何在log4j.xml中设置它。另一个选择是,我通过log4j.xml使用它也不成功 干杯引用SMTPAppender的话: 可以通过设置evaluatorClass来修改触发条件 属性,该属性的名称为实现 TriggeringEventEvaluator,使用 TriggeringEventEvaluator实例或嵌套triggeringPolicy 元素,指定类
,但我不知道如何在log4j.xml中设置它。另一个选择是,我通过log4j.xml使用它也不成功
干杯引用SMTPAppender的话:
可以通过设置evaluatorClass来修改触发条件
属性,该属性的名称为实现
TriggeringEventEvaluator,使用
TriggeringEventEvaluator实例或嵌套triggeringPolicy
元素,指定类在其中实现TriggeringEventEvaluator
基本上,我可以使用嵌套的triggeringPolicy元素来模拟计算器的行为。另外的优点是,我可以将参数传递给triggeringPolicy元素
我有一个为每n条消息发送电子邮件摘要的用例。为此,我使用了以下触发策略:
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配置为每两个日志事件发送一封邮件,如下所示:
<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>
希望这有帮助
<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>