NLog - 根据错误的发生仅记录一个规则

时间:2016-10-04 17:11:21

标签: c# logging nlog

我在NLog.config文件中有以下规则:

<rules>
  <logger name="*" minlevel="Trace" writeTo="graylog" />
  <logger name="*" minlevel="Trace" writeTo="sqlserver" />
  <logger name="*" minlevel="Trace" writeTo="xml" />
  <logger name="*" minlevel="Trace" writeTo="console" />
</rules>

我希望我的应用程序尝试登录到第一条规则,如果成功,则使此规则成为最终规则,而不是记录到其他任何地方。如果发生错误(例如,Graylog服务器已关闭),则会继续执行第二条规则,依此类推。

有没有办法让这种情况发生?

1 个答案:

答案 0 :(得分:0)

您可以使用FallbackGroup

<targets>
  <target xsi:type="FallbackGroup" name="fallbackGroup" returnToFirstOnSuccess="true">
    <target name="graylog" ... />
    <target name="sqlserver" ... />
    <target name="xml" ... />
    <target name="console" ... />
  </target>
</targets>
<rules>
  <logger name="*" minlevel="Trace" writeTo="fallbackGroup" />
</rules>

这将尝试第一个目标(graylog),如果它抛出异常,则下一个目标(sqlserver)等。

另见the docs