通过WCF将NLog日志发送到服务器

时间:2017-02-07 12:03:04

标签: c# wcf nlog

我有一台服务器和许多客户端应用程序,NLog随处可见。目的是几乎完全从客户端删除日志并将日志从客户端直接发送到服务器。它通过WCF,ILogReceiverServerLogReceiverService目标(写为there)成功完成。

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

1 个答案:

答案 0 :(得分:3)

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

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

因此,当主要目标失败时,它将回退到次要目标。