NLog - FallbackGroup未按预期工作

时间:2017-06-16 09:23:28

标签: nlog

我正在使用Nlog的FallbackGroup包装器来设置故障转移日志记录。如果我的第一个目标 - “网络”记录器失败/错误输出,它应该记录到第二个目标/回退目标“EventLog”。但是当我运行我的控制台应用程序时,我可以看到它只是尝试登录到第一个并且总是失败。它甚至没有尝试登录“EventLog”。仅供参考,EventLog目标在隔离状态下工作正常(没有回退设置)。

我通过在NLog上启用“InternalLogging”来获得上述细节,这基本上是将所有NLog执行写入文件。

以下是我的NLog配置:

<configuration>
<configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
    <targets>
        <!-- For logging over network with json layout -->
        <target xsi:type="FallbackGroup" name="XXXFallBackLoggingGroup" returnToFirstOnSuccess="true">
            <target name="network" xsi:type="Network" address="https://XXXX/api/log">
                <layout xsi:type="JsonLayout">
                    <attribute name="time" layout="${longdate:universalTime=true}" />
                    <attribute name="level" layout="${level:upperCase=true}"/>
                    <attribute name="message" layout="${message}" />
                </layout>
            </target>
            <target xsi:type="EventLog" name="eventlog" source="xxxx" layout="${level:upperCase=true}${newline}${longdate:universalTime=true}${newline}${message}${newline}"/>
        </target>
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="XXXFallBackLoggingGroup" />
    </rules>
</nlog>

这让我发疯了。我已经多次尝试修复它,但没有任何效果。任何想法/建议或解决方案,请告诉我。

编辑: 我试图更新目标的名称,但这也不起作用,但正如我之前提到的,两者都是孤立的。另一点,为了测试后备日志记录,我已经删除了我的API - 第一个目标,因此它总是抛出404错误,但仍然是NLog试图选择第一个目标

2 个答案:

答案 0 :(得分:1)

我有完全相同的问题。我注意到激活 throwExceptions 属性时。它抛出异常(它无法登录sql server数据库或其他目标)。接下来它终止了这个过程。

删除此属性,您的故障转移配置应该有效。

答案 1 :(得分:0)

https://github.com/NLog/NLog/blob/v4.4.12/src/NLog/Internal/ExceptionHelper.cs#L100

这是导致此行为的行。

如果您仍想了解配置问题,可以将 throwExcepions = true 更改为 throwConfigExceptions = true