【问题标题】:NLog - FallbackGroup not working as expectedNLog - FallbackGroup 未按预期工作
【发布时间】:2017-06-16 09:23:28
【问题描述】:

我正在使用 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 仍然试图总是选择第一个目标

【问题讨论】:

  • 尝试了您发布的配置(使用无效的 url),但将 EventLog 修改为控制台,并且在使用 NLog 4.4.10 时工作正常。猜猜你应该多研究一下内部日志。
  • 不确定..我使用的代码有什么问题..我已经多次查看内部日志,在那里找不到任何东西。但是,如果我错过了什么,我会再次查看。但是 NLog 只是试图发布到 API,虽然每次都失败 404
  • 认为这是您的问题。 Believe Network-target 只有在出现网络错误时才会失败,但是当得到 HTTP 回复时它是成功的(即使回复有效负载包括 HTTP 错误 404)。如果你有一个 WebServer 作为端点,也许 WebService-target 更适合你。

标签: nlog


【解决方案1】:

我遇到了完全相同的问题。我注意到当 throwExceptions 属性被激活时。它抛出异常(它无法登录 sql server 数据库或其他目标)。然后它终止进程。

删除此属性,您的故障转移配置应该可以工作。

【讨论】:

    【解决方案2】:

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

    这是负责此行为的行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2022-01-24
      • 2015-05-11
      • 2020-05-15
      • 2014-10-31
      • 2018-02-12
      • 2014-01-20
      相关资源
      最近更新 更多