代码之家  ›  专栏  ›  技术社区  ›  Vladimir Kocjancic

如何为回退配置log4net

  •  3
  • Vladimir Kocjancic  · 技术社区  · 14 年前

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

    因此,最好是有某种退路。假设写入系统日志失败,则写入文件或数据库。

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   jevakallio    14 年前

    我认为你不能通过配置来做到这一点。这个问题是 open in the log4net feature backlog .

    如果您的应用程序可以占用日志开销,那么最简单的解决方案是在默认情况下记录到另一个附加程序。

    或者,您可以尝试在自定义附加器中包装正在使用的附加器,并在系统日志附加器引发异常时实现回退方案。如果它不安静地吞下它们。

    log4net FAQ :

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

    要开始,我们需要查看log4net.appender.traceAppender的源代码,作为使appender正常工作所需的最小代码量的示例。

    第三种选择是研究您的附加器的源代码,看看您是否可以派生它并在那里进行必要的定制。