.net 程序关闭时Log4Net持久缓冲区

.net 程序关闭时Log4Net持久缓冲区,.net,winforms,user-interface,log4net,.net,Winforms,User Interface,Log4net,Log4Net库是全新的,有一些东西我还没有弄明白 我想缓冲区只在内存中,对吗?当您启动应用程序的新实例时,缓冲区会重新初始化吗?我有一个要求,我被告知只在应用程序失败x次后才向技术支持发送电子邮件。此应用程序将按计划每两分钟左右运行一次。如果失败,它将在两分钟后重试。如果失败次数过多且失败原因是抛出错误,则应发送电子邮件 我现在能想到的最简单的方法是将失败的尝试次数持久化到user.config。然后,当我的程序捕捉到异常时,检查有多少次尝试失败,如果达到阈值,则使用正确的记录器/追加器发送电

Log4Net库是全新的,有一些东西我还没有弄明白

我想缓冲区只在内存中,对吗?当您启动应用程序的新实例时,缓冲区会重新初始化吗?我有一个要求,我被告知只在应用程序失败x次后才向技术支持发送电子邮件。此应用程序将按计划每两分钟左右运行一次。如果失败,它将在两分钟后重试。如果失败次数过多且失败原因是抛出错误,则应发送电子邮件

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


有更好的办法吗?也许可以用某种方法来保存缓冲区,这样我就可以对有损设置做些什么了?

缓冲区在内存中,这意味着如果要一次又一次地启动应用程序,则必须以某种方式保存数据

我会使用其他持久解决方案的文件或注册表-数据库。。。等


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

谢谢您的回答。那么,您是否会在这里使用不同的级别进行区分:如果numberFailedAttempts>=3{logger.Fatalwired-to-email appender;}其他{logger.Errorwired-to-other-rolling appender;}-类似的情况?取决于您尝试执行的操作。。。如果numberFailedAttemps<3且具有信息/警告阈值,则可以将日志写入文件;如果numberFailedAttemps==3且具有错误阈值,则可以将日志写入日志文件并发送电子邮件。然后,将电子邮件附加器应用于错误阈值,将文件附加器应用于信息/警告。谢谢你的帮助。