【问题标题】:Is there a fail over mechanism with NLog?NLog 有故障转移机制吗?
【发布时间】:2018-09-22 03:41:36
【问题描述】:

我正在使用 NLog 进行数据库日志记录。如果数据库已关闭,那么我只需要将它记录到文件中。有没有办法做到这一点?

我不想在文件和数据库中记录日志条目。如果数据库目标无法记录(如果数据库已关闭),那么我必须登录到文件。 Nlog 是否有任何故障转移或回退功能?

【问题讨论】:

  • 我猜大多数日志框架都会处理(内部)此类异常,并且(可能)使用应用程序对此一无所知(除非您可以订阅一些可能在数据库连接中断时触发的公开事件)。但是没有什么能阻止你编写自己的 Appender。您可以扩展一个接口/基类。

标签: c# logging nlog failover


【解决方案1】:

是的,有办法。它被称为FallbackGroup

文档可以在这里找到:https://github.com/nlog/NLog/wiki/FallbackGroup-target

这是一个从文档中公然羞辱地摘录的例子:

<target xsi:type="FallbackGroup" 
        name="mail"
        returnToFirstOnSuccess="true">
    <target xsi:type="Mail"
            name="mailserver1"
            subject="Layout"
            to="Layout"
            from="Layout"
            smtpServer="mx1.example.com" 
            smtpPort="Integer"
            layout="Layout" />
    <target xsi:type="Mail"
            name="mailserver2" 
            subject="Layout"
            to="Layout"
            from="Layout"
            smtpServer="mx2.example.com" 
            smtpPort="Integer"
            layout="Layout" />
</target>
<rules>
  <logger name="*" minlevel="Trace" writeTo="mail" />
</rules>

如果第一个失败,它将尝试另一个邮件服务器。如果成功,它也会返回到第一个目标。

我从未在生产中使用过它,也许文档中的其他选项可以帮助您根据问题对其进行微调。

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 2023-04-11
    • 2018-12-28
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多