Log4Net - 使smtp appender仅在100次错误后发送电子邮件

时间:2017-03-29 08:57:11

标签: log4net smtpappender

我想在 100 ERRORS 写成html表之后发送电子邮件(这是SmtpExtendedAppender的目的,迭代所有的消息已保存)但我不确定如何访问它们。

这是我的app.config:

<appender name="SmtpAppender" type="log4net.Appender.SmtpExtendedAppender">
        <authentication value="Basic" />
        <password value="xxxxxx"/>
        <username value="xxxxxxxx"/>
        <from value="myemail@gmail.com" />
        <to value="toemail@gmail.com" />
        <smtpHost value="smtp.gmail.com" />
        <isBodyHtml value="true" />
        <bufferSize value="100" />
        <EnableSsl value="true"/>
        <subject value="test logging message" />
        <lossy value="true" />
        <evaluator type="log4net.Core.LevelEvaluator">
            <threshold value="WARN"/>
        </evaluator>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{ABSOLUTE} [%logger]%newlineUsername: %property{username}%newline%level - %message%newline%exception" />
        </layout>
    </appender>

这是我的控制台应用程序:

static void Main(string[] args)
        {
            Console.WriteLine("hello world");

            log.Error("This is my first error message");

            log.Error("This is my second error message");

            Console.ReadLine();
        }

我不完全理解log4net缓冲区大小是如何工作的,即使我给它一个值100,每次运行我的控制台应用程序时它都会向我发送2封电子邮件。

如果我将运行此应用程序50次以进入 100错误,是否可以累积它们然后通过一封电子邮件发送它们?

1 个答案:

答案 0 :(得分:2)

不,这是不可能的。 appender不适用于应用程序的多个实例。每次重新启动应用程序时,所有缓冲区都为空。