Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 除非Thread.sleep,否则Log4j不会发送邮件_Java_Log4j - Fatal编程技术网

Java 除非Thread.sleep,否则Log4j不会发送邮件

Java 除非Thread.sleep,否则Log4j不会发送邮件,java,log4j,Java,Log4j,我在log4j和发送通知电子邮件方面遇到问题 我的log4j.properties log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=ERROR log4j.appender.MAIL.BufferSize=512 log4j.appender.MAIL.SMTPHost=10.10.10.10 log4j.appender.MAIL.From=team@domain.com l

我在
log4j
和发送通知电子邮件方面遇到问题

我的log4j.properties

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
log4j.appender.MAIL.BufferSize=512
log4j.appender.MAIL.SMTPHost=10.10.10.10
log4j.appender.MAIL.From=team@domain.com
log4j.appender.MAIL.Subject=Subject Here
log4j.appender.MAIL.To=team@domain.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n
该程序在尝试发送和发送电子邮件时出错,因此我制作了一个
log.error()
来测试它

我测试了下面的代码,但它仍然没有发送电子邮件

public static void main(String[] args) {
    log.error("Error ");
}
当我在上面的代码中添加
线程时。sleep
。它起作用了

public static void main(String[] args) throws Exception{
    log.error("Error ");
    Thread.sleep(1000000L);
}
问题是
主线程
退出,从而导致
邮件发送线程
终止。所以我决定将程序更改为等待(而不是退出),直到log4j完全发送邮件。但是我不知道如何在log4j中获取邮件发送状态


任何帮助都将不胜感激。

尝试将BufferSize值设置为1,可能记录器只是在发送前等待一个完整的缓冲区。

将调用添加到

org.apache.log4j.LogManager.shutdown();
main
方法的末尾