Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 log4j2无法向电子邮件发送错误通知_Java_Xml_Log4j_Log4j2_Smtpappender - Fatal编程技术网

Java log4j2无法向电子邮件发送错误通知

Java log4j2无法向电子邮件发送错误通知,java,xml,log4j,log4j2,smtpappender,Java,Xml,Log4j,Log4j2,Smtpappender,我目前正在创建一个Java应用程序。当我的应用程序出现错误时,我想向我的gmail帐户发送电子邮件通知。下面是log4j2.xml文件的一部分。但当我尝试运行我的应用程序时,应用程序会打印出来 2015-08-28 14:16:51,671 ERROR Unable to locate appender Email for logger 我不知道为什么它不起作用。谢谢你的帮助 这是我的log4j2.xml文件的一部分 <appender name= "Email" class="org

我目前正在创建一个Java应用程序。当我的应用程序出现错误时,我想向我的gmail帐户发送电子邮件通知。下面是log4j2.xml文件的一部分。但当我尝试运行我的应用程序时,应用程序会打印出来

2015-08-28 14:16:51,671 ERROR Unable to locate appender Email for logger 
我不知道为什么它不起作用。谢谢你的帮助

这是我的log4j2.xml文件的一部分

<appender name= "Email" class="org.apache.log4j.net.SMTPAppender">

        <param name = "BufferSize" value = "50"/>
        <param name = "SMTPHost" value = "smtp.gmail.com"/>
        <param name = "SMTPort" value = "465"/>
        <param name = "SMTPUsername" value ="myemail@gmail.com"/>
        <param name = "SMTPPassword" value ="mypassword"/>
        <param name = "From" value="myemail@gmail.com"/>
        <param name = "To" value="myemail@gmail.com"/>
        <param name = "Subject" value="Testing Log4j mail notification"/>
        <layout class = "org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" />
        </layout>

        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="error"/>
            <param name="LevelMax" value="fatal"/>
        </filter>

    </appender>

是否在您的
log4j2.xml
文件中声明了记录器?您的配置文件名为“log4j2.xml”,当您使用log4j 1.x时,它的意思是log4j 2.x。您的配置应该命名为“log4j.xml”,而不是您正在为log4j 1.x(org.apache.log4j.abcccc)设置xml代码,但是您正在为log4j版本2.xis使用文件名语法(log4j2.xml),这是在
log4j2.xml
文件中声明的记录器吗?您的配置文件名为“log4j2.xml”,当您使用log4j 1.x时,它是为log4j 2.x指定的。您的配置应该命名为“log4j.xml”,而不是您正在为log4j 1.x(org.apache.log4j.abcccc)设置xml代码,但是您正在为log4j版本2.x使用文件名语法(log4j2.xml)
package com.testcase;

import org.apache.logging.log4j.Logger ;
import org.apache.logging.log4j.LogManager;


public class log4jDemo {

    protected static Logger logger = LogManager.getLogger(log4jDemo.class);

    public static void main (String [] args){


    logger.trace("trace message");
    logger.warn("warn message");
    logger.error("Error message, a very long error message");

    }
}