Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 smtp appender只发送一封针对所有错误的电子邮件_Java_Log4j_Smtpappender - Fatal编程技术网

Java Log4j smtp appender只发送一封针对所有错误的电子邮件

Java Log4j smtp appender只发送一封针对所有错误的电子邮件,java,log4j,smtpappender,Java,Log4j,Smtpappender,我有一个处理ID的程序。某些ID在ETL上出现多个错误。 我正在设置log4j smtp,以便在遇到错误或致命错误时发送电子邮件。 现在,它将发送5封电子邮件,针对一个程序运行中的5个错误。我想把它们汇总成一封电子邮件。我设置了log4j属性而不是xml 财产。我躲来躲去 log4j.rootCategory=DEBUG,stdout,fileout, sendMail log4j.appender.sendMail=org.apache.log4j.net.SMTPAppender log4

我有一个处理ID的程序。某些ID在ETL上出现多个错误。 我正在设置log4j smtp,以便在遇到错误或致命错误时发送电子邮件。 现在,它将发送5封电子邮件,针对一个程序运行中的5个错误。我想把它们汇总成一封电子邮件。我设置了log4j属性而不是xml

财产。我躲来躲去

log4j.rootCategory=DEBUG,stdout,fileout, sendMail

log4j.appender.sendMail=org.apache.log4j.net.SMTPAppender
log4j.appender.sendMail.Threshold=Error
log4j.appender.sendMail.SMTPHost=mailhost
log4j.appender.sendMail.From=hidden
log4j.appender.sendMail.To=hidden
log4j.appender.sendMail.Subject=Failure
log4j.appender.sendMail.BufferSize=1
#log4j.appender.sendMail.evaluatorClass=TriggerLogEvent
log4j.appender.sendMail.layout=org.apache.log4j.PatternLayout
log4j.appender.sendMail.layout.ConversionPattern=%m

log4j smtp appender上没有太多信息。

创建另一个类来聚合错误消息并为该类创建新的记录器如何

因此,首先创建一个类,该类将保存特定id的所有错误消息

public class TestLog4j {

static Logger log = Logger.getLogger(TestLog4j.class.getName());

int id;
ArrayList<String> errors,fatals;

public void addError(String e)
{

    this.errors.add(e);
}
public void addFatal(String f)
{

    this.fatals.add(f);
}

public void sendLogs() {

    SimpleDateFormat sdf = new SimpleDateFormat();

    for (String e : this.errors)
    {
         log.error("Error Message at "+sdf.format(new Date()) + " for id "+ this.id);
    }
    for (String f : this.fatals)
    {
          log.fatal("Fatal Message at "+sdf.format(new Date()) + " for id "+ this.id);
    }


    }

}

那么,如何设置新属性?如何设置log.error和log.fatal?它们是红色的。你能告诉我如何设置属性吗。?我将永远感激你。我今天真的很忙。我以后可能会有时间来实现这一点。所以,也许星期一我会接受你的回答。除非我还有更多的问题。非常感谢。我想我成功了。至少在这一点上。我感谢你的帮助。感谢您坚持到底并进行彻底检查!=)
log4j.logger.package.TestLog4j = ERROR, sendmail
# turn off additivity
log4j.additivity.package.TestLog4j = false