Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 Apache Log4j自定义电子邮件附加器未邮寄,应用程序启动时出现错误通知_Java_Email_Logging_Log4j_Log4j2 - Fatal编程技术网

Java Apache Log4j自定义电子邮件附加器未邮寄,应用程序启动时出现错误通知

Java Apache Log4j自定义电子邮件附加器未邮寄,应用程序启动时出现错误通知,java,email,logging,log4j,log4j2,Java,Email,Logging,Log4j,Log4j2,我有一个应用程序,配置了记录器,如果设置了标记,可以向所有应用程序管理员发送电子邮件。我们编写了一个定制的电子邮件附加器来实现这一点,因为现有的SMTPAppender对于我们的需求来说太死板了 本周早些时候,我们注意到没有收到来自QA服务器的日志电子邮件,这在以前是经常发生的。在我们的配置中没有任何东西会突然出现在我面前,我很困惑 这是IDE中应用程序启动的输出: 2015-10-07 14:26:11,344 ERROR Error processing element EMAIL: CLA

我有一个应用程序,配置了记录器,如果设置了标记,可以向所有应用程序管理员发送电子邮件。我们编写了一个定制的电子邮件附加器来实现这一点,因为现有的SMTPAppender对于我们的需求来说太死板了

本周早些时候,我们注意到没有收到来自QA服务器的日志电子邮件,这在以前是经常发生的。在我们的配置中没有任何东西会突然出现在我面前,我很困惑

这是IDE中应用程序启动的输出:

2015-10-07 14:26:11,344 ERROR Error processing element EMAIL: CLASS_NOT_FOUND
2015-10-07 14:26:11,435 ERROR Unable to locate appender Email for logger 
14:26:11.709 [main] INFO  c.q.app.services.server.data.h2.H2DbLifecycleManager - Starting DB on
connection jdbc:h2:tcp://localhost/C:/Users/jason/AppData/Local/appserver/store/data/db
2015-10-07 14:26:13,401 ERROR Error processing element EMAIL: CLASS_NOT_FOUND
2015-10-07 14:26:13,416 ERROR Unable to locate appender Email for logger 
Oct 07, 2015 2:26:14 PM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 4.3.1.Final
并且自定义附加器定义为

/**
 * An appender used to send an email notification of a log event to all application Administrators.
 */
@Plugin(name = "EMAIL", category = "Core", elementType = "appender", printObject = true)
public class EmailAppender extends AbstractAppender
{

    /**
     * @param name - the name of the Appender.  Cannot be null
     * @param filter - The Filter or null (defaults to ThresholdFilter, level of ERROR).
     * @param layout - The layout to use - if not included it uses the default PatternLayout.
     * @return an appender for sending emails on logging events
     */
    @PluginFactory
    public static EmailAppender createAppender(@PluginAttribute("name") final String name, 
                                                @PluginElement("Filter") Filter filter, @PluginElement("Layout") Layout<? extends Serializable> layout)
    {
        if (name == null)
        {
            LOGGER.error("No name provided for NotificationAppender");
            return null;
        }

        if (filter == null)
            filter = ThresholdFilter.createFilter(null, null, null);

        if (layout == null)
            layout = PatternLayout.createDefaultLayout();

        return new EmailAppender(name, filter, layout);
    }

    protected EmailAppender(String name, Filter filter, Layout<? extends Serializable> layout)
    {
        super(name, filter, layout);
    }

    ...

}
/**
*用于向所有应用程序管理员发送日志事件电子邮件通知的追加器。
*/
@插件(name=“EMAIL”、category=“Core”、elementType=“appender”、printObject=true)
公共类EmailAppender扩展了AbstractAppender
{
/**
*@param name-追加器的名称。不能为空
*@param filter-过滤器或null(默认为ThresholdFilter,错误级别)。
*@param layout-要使用的布局-如果未包含,则使用默认的PatternLayout。
*@返回用于在记录事件时发送电子邮件的附件
*/
@插件工厂
公共静态EmailAppender createAppender(@PluginAttribute(“name”)最终字符串名,

@PluginElement(“Filter”)Filter,@PluginElement(“Layout”)Layout发布此答案,以防任何人遇到类似情况

由于未知原因,Log4J注释扫描器无法获取自定义appender类,尽管类定义上有`@Plugin(name=…)注释。我没有经验或工具深入了解原因,但找到了解决方案

配置
标记中添加一个
限定符就成功了,如下所示:

<Configuration status="WARN" packages="com.company.web.common.logging">

<Configuration status="WARN" packages="com.company.web.common.logging">