通过WCF向服务器发送NLog日志
Sending NLog logs to the server through WCF
我有一台服务器和很多客户端应用程序,到处都在使用NLog。目的是几乎完全从客户端删除日志并将日志从客户端直接发送到服务器。它已通过 WCF、ILogReceiverServer
和 LogReceiverService
目标(如 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 失败时,它将回退到次要目标。
我有一台服务器和很多客户端应用程序,到处都在使用NLog。目的是几乎完全从客户端删除日志并将日志从客户端直接发送到服务器。它已通过 WCF、ILogReceiverServer
和 LogReceiverService
目标(如 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 失败时,它将回退到次要目标。