我的应用程序使用 nlog。它需要将日志发送到在同一主机上运行的 nxlog 进程(我也可以控制)。
我想过使用 TCP 或 UDP 从 nlog 向 nxlog 发送 json 行。这是一个简单的设计,但它不是容错 AFAIK。如果 nxlog 暂时关闭,nlog 甚至可能会继续重试,但如果我的应用程序在那一刻退出,日志消息就会丢失。
或者,我可以设置 nlog 文件目标以写入 json 行。它将作为持久缓冲区工作。Nxlog 将从该文件中读取。问题变成如何设置文件滚动设置。如果我不设置滚动,nlog 可能会在 nxlog 读取最后的日志行之前截断文件。如果我设置滚动,nxlog 会将新归档文件视为一组新日志并“重播”它们以生成重复项。
所以,我的问题是:如何将 nlog 和 nxlog 设置为容错并防止重复?