【问题标题】:Log4Net Persist buffer when program closes程序关闭时的 Log4Net Persist 缓冲区
【发布时间】:2023-03-11 21:15:01
【问题描述】:

对 Log4Net 库来说是全新的,有些东西我还没有弄清楚。

我假设缓冲区只在内存中,对吧?当您启动应用程序的新实例时,缓冲区会重新初始化吗?我有一个要求,我被告知仅在应用程序失败 x 次后才向技术支持发送电子邮件。此应用程序将按计划运行(每两分钟左右)。如果失败,它将在两分钟内重试。如果它失败了太多次不成功(并且由于抛出错误而失败),那么它应该发送电子邮件。

我现在能想到的最简单的方法是将失败尝试的次数保存到 user.config。然后,当我的程序捕获异常时,检查发生了多少次失败尝试,如果达到阈值,则使用正确的记录器/附加器发送电子邮件。程序成功运行后,它在退出之前要做的最后一件事是将 user.config 设置重置为 0 次失败尝试。

有没有更好的方法?也许某种方式可以持久化缓冲区,以便我可以对有损设置做一些事情?

【问题讨论】:

    标签: .net winforms user-interface log4net


    【解决方案1】:

    缓冲区在内存中,这意味着如果您要一次又一次地启动应用程序并考虑计划任务,您将不得不以某种方式持久化您的数据。

    我会为此使用文件或注册表(其他持久性解决方案 - 数据库、memcached...等)

    要使用 log4net 发送消息,您可以查看 this post

    【讨论】:

    • 感谢您的回答。那么,您会在这里使用不同的级别来区分: if (numberFailedAttempts >= 3) { logger.Fatal("wired up to email appender"); } else { logger.Error("连接到其他滚动附加程序"); } -- 类似的东西?
    • 取决于您要执行的操作...如果 numberFailedAttemps
    • 太棒了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多