防止log4net通过SMTP发送重复的问题

And*_*eas 13 asp.net log4net jira

我们使用SMTP将我们的log4net与Jira连接起来.

现在我们担心,由于网站是公开的,如果我们在生产环境中遇到很多问题,Jira服务器会发生什么.

我们已经对Critical和Fatal进行了过滤,但是我们希望在log4net上看到一些累加器服务,或者在普通过滤器上查看重复问题并阻止它们通过电子邮件发送.最好不必更改错误报告代码,因此配置解决方案最好.

我想将日志转储到数据库然后创建一个单独的监听器,一些智能代码将是一个(pricy)替代品.

Ste*_*gli 17

也许足以满足您的要求:

它基本上限制了在给定时间跨度内发送的电子邮件数量.我认为根据您的需求定制它应该很容易.我做了类似的事情甚至在一定时间内丢弃了消息:

public class SmtpThrottlingAppender : SmtpAppender
{
    private DateTime lastFlush = DateTime.MinValue;
    private TimeSpan flushInterval = new TimeSpan(0, 5, 0);

    public TimeSpan FlushInterval
    {
        get { return this.flushInterval; }
        set { this.flushInterval = value; }
    }

    protected override void SendBuffer(LoggingEvent[] events)
    {
        if (DateTime.Now - this.lastFlush > this.flushInterval)
        {
            base.SendBuffer(events);
            this.lastFlush = DateTime.Now;
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

刷新间隔可以配置为其他appender的正常设置:

<flushInterval value="01:00:00" />
Run Code Online (Sandbox Code Playgroud)