如何为回退配置log4net

如何为回退配置log4net,log4net,log4net-configuration,Log4net,Log4net Configuration,这就是我的处境。我已经使用log4net成功地实现了远程系统日志记录。然而,据我所能测试的,如果syslog IP无效,所有消息都不会在任何地方记录,也不会引发异常。它什么也不做 因此,有某种退路是很好的。假设写入syslog失败,则写入文件或数据库 使用log4net也可以吗?或者我必须将其配置为同时登录到两个位置吗?我认为通过配置无法做到这一点。这个问题很重要 如果您的应用程序可以消耗日志开销,那么最简单的解决方案是默认情况下登录到另一个appender 或者,您可以尝试将正在自定义appe

这就是我的处境。我已经使用log4net成功地实现了远程系统日志记录。然而,据我所能测试的,如果syslog IP无效,所有消息都不会在任何地方记录,也不会引发异常。它什么也不做

因此,有某种退路是很好的。假设写入syslog失败,则写入文件或数据库


使用log4net也可以吗?或者我必须将其配置为同时登录到两个位置吗?

我认为通过配置无法做到这一点。这个问题很重要

如果您的应用程序可以消耗日志开销,那么最简单的解决方案是默认情况下登录到另一个appender

或者,您可以尝试将正在自定义appender中使用的appender包装起来,并在syslog appender引发异常时实现回退场景。如果它不默默地吞下它们

发件人:

您可以实现log4net.Appender.IAppender接口来创建您自己的定制Appender。我们建议您扩展log4net.Appender.AppenderSkeleton类,而不是从头开始。您应该在独立于log4net程序集的程序集中实现自定义代码

首先,值得查看log4net.Appender.TraceAppender的源代码,作为让Appender工作所需的最低代码量的示例


第三种选择是查看appender的源代码,看看是否可以将其分叉并在那里进行必要的自定义。

我希望可以完成。我用的是又快又脏的溶液。双重记录。这是错误的,有一种方法可以解决这个问题:@RezaM.a中的这个是正确的。这句话正好说明了FallbackAppender实现了什么。