Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j.xml注入计算器_Java_Logging_Log4j - Fatal编程技术网

Java Log4j.xml注入计算器

Java Log4j.xml注入计算器,java,logging,log4j,Java,Logging,Log4j,我的项目使用log4j1.2.17。我已成功地将我的自定义“Evaluator”注入SMTPAppender,使用: ,但我不知道如何在log4j.xml中设置它。另一个选择是,我通过log4j.xml使用它也不成功 干杯引用SMTPAppender的话: 可以通过设置evaluatorClass来修改触发条件 属性,该属性的名称为实现 TriggeringEventEvaluator,使用 TriggeringEventEvaluator实例或嵌套triggeringPolicy 元素,指定类

我的项目使用log4j1.2.17。我已成功地将我的自定义“Evaluator”注入SMTPAppender,使用:

,但我不知道如何在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>