【问题标题】:Log4Net - make smtp appender send email only after 100 errorsLog4Net - 使 smtp appender 仅在 100 个错误后发送电子邮件
【发布时间】:2017-03-29 08:57:10
【问题描述】:

我只想在 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 个错误,是否可以累积它们然后在一封电子邮件中发送它们?

【问题讨论】:

  • 我不这么认为——当应用程序退出时,appender 会关闭,刷新它的缓冲区,然后发送电子邮件。您需要扩展 appender 以获得某种支持存储来保存日志事件,直到达到阈值。
  • @stuartd 你的意思是将消息存储在cachesession
  • 除非您准备好丢失消息,否则您会希望使用持久存储。
  • @stuartd 在这个答案中,他说缓冲区消息保存在 RAM 中,stackoverflow.com/questions/30630952/… 这是真的吗?
  • 当进程(即你的控制台应用程序正在运行)时,消息被缓冲在进程内存中。当进程结束(应用程序终止)时,缓冲区中的任何内容都会被刷新。

标签: log4net smtpappender


【解决方案1】:

不,那是不可能的。 appender 不能在您的应用程序的多个实例上工作。每次重新启动应用程序时,所有缓冲区都是空的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多