通过WCF向服务器发送NLog日志

Sending NLog logs to the server through WCF

我有一台服务器和很多客户端应用程序,到处都在使用NLog。目的是几乎完全从客户端删除日志并将日志从客户端直接发送到服务器。它已通过 WCF、ILogReceiverServerLogReceiverService 目标(如 there 所写)成功完成。

但是服务器和客户端应用程序之间的连接可能会丢失,因此有必要将 Error 消息写入客户端的文件。并且它应该只在连接丢失时写入。 我研究过 NLog 文档(应该研究得更好),但没有找到任何东西。是否可以检查日志是否发送成功?或者,可能是,根据日志发送的结果 enable/disable logger

客户端配置:

  <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="file" xsi:type="File" ... />
      <target name="console" xsi:type="Console" ... />
      <target xsi:type="LogReceiverService"
        name="RemoteWcfLogger"
        endpointConfigurationName="NetTcpBinding_ILogReceiverServer"
        endpointAddress="net.tcp://address:port/LogReceiverServer"
        useBinaryEncoding="True"
        clientId=""
        includeEventProperties="True">
      </target>
    </targets>
    <rules>
      <logger name="*" minLevel="Trace" writeTo="RemoteWcfLogger"/>
      <logger name="*" minLevel="Error" writeTo="file" />
      <logger name="*" minLevel="Trace" writeTo="console" />
    </rules>
  </nlog>

也许 Nlog FallbackGroup-target 可能是一个解决方案:

https://github.com/nlog/NLog/wiki/FallbackGroup-target

所以当 primary-target 失败时,它将回退到次要目标。