【发布时间】: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