我在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服务器已关闭),则会继续执行第二条规则,依此类推。
有没有办法让这种情况发生?
答案 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