【发布时间】:2021-02-04 07:52:31
【问题描述】:
我正在开发一个 C# 应用程序,该应用程序通过 Serilog (Serilog.Sinks.Seq) 在远程 Seq Sink 上发送日志。在我添加更多日志之前它运行良好;之后,它只是将一些日志发送到 seq。我测试了文件接收器,但它没有任何问题,并将所有日志写入文件,但 seq 仍然有同样的问题。我什至在本地计算机上测试了 Seq,但没有利润。
所以我安装了 Serilog.Sinks.PeriodicBatching 希望能解决这个问题。但不幸的是,我没有找到任何文档或示例如何在我的项目中配置和启用它。我发现的唯一代码是https://github.com/serilog/serilog-sinks-periodicbatching,我不明白。有人知道如何使用它来解决 Seq 的这个问题吗?我需要一个简单的例子。
我正在使用最新版本的 Serilog 和 PeriodicBatching。
更新 1:
这是正确生成的文件日志。在 seq 中,最后三个日志被删除。
2021-02-06 09:45:36.164 +03:30 [INF] ⠀⠀⠀⠀⠀|
2021-02-06 09:45:36.180 +03:30 [INF] Application Start.
2021-02-06 09:45:36.180 +03:30 [ERR] It is a fresh OS
System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at SenderConsole.Program.scanClientAndSendIfDifferent() in D:\Programing\SysWatch\SenderConsole\Program.cs:line 434
2021-02-06 09:45:36.195 +03:30 [DBG] getCurrentClientConfig() Started.
2021-02-06 09:45:36.289 +03:30 [DBG] getCurrentClientConfig()==> CpuChanges
2021-02-06 09:45:36.305 +03:30 [DBG] getCurrentClientConfig()==> StorageChanges
2021-02-06 09:45:36.383 +03:30 [DBG] getCurrentClientConfig()==> RamChanges
2021-02-06 09:45:36.398 +03:30 [DBG] getCurrentClientConfig()==> MotherboardChanges
2021-02-06 09:45:36.414 +03:30 [DBG] getCurrentClientConfig()==> OsChanges
2021-02-06 09:45:36.492 +03:30 [DBG] getCurrentClientConfig()==> NicChanges
2021-02-06 09:45:36.679 +03:30 [DBG] getCurrentClientConfig()==> PrinterChanges
2021-02-06 09:45:36.695 +03:30 [DBG] getCurrentClientConfig()==> DomainChanges
2021-02-06 09:45:36.883 +03:30 [DBG] getCurrentClientConfig()==> iSMBIOSChanges
2021-02-06 09:45:36.914 +03:30 [DBG] getCurrentClientConfig()==> AppChanges
2021-02-06 09:45:36.929 +03:30 [DBG] getCurrentClientConfig()==> AntivirusChanges
2021-02-06 09:45:36.929 +03:30 [DBG] getCurrentClientConfig() Ended.
2021-02-06 09:45:36.929 +03:30 [DBG] configsAreDifferent() Started.
2021-02-06 09:45:36.929 +03:30 [INF] Configs are different.
2021-02-06 09:45:36.929 +03:30 [DBG] serializeByJson() Started.
2021-02-06 09:45:37.148 +03:30 [DBG] serializeByJson() Ended.
2021-02-06 09:45:39.210 +03:30 [FTL] Unable to connect to the remote server
2021-02-06 09:45:39.210 +03:30 [INF] Sent to DB.
2021-02-06 09:45:39.210 +03:30 [INF] Application End.
【问题讨论】:
-
Seq 在网站中的设置决定了它将接受的最大负载大小。根据您的结构化日志属性,它们可能会被删除。我发现我必须增加我的相当大。 seq sink 中还有客户端设置,您可以使用它来控制批次的大小。减少消息数量和批量大小,以便服务器中的设置为倍数可能会对您有所帮助。它帮助了我,我的日志不再被丢弃。如果您查看它的来源,seq 接收器已经是一个定期批处理接收器。
-
感谢@pinkfloydx33 的评论。如何在客户端配置批处理?
-
调用
WriteTo.Seq时有几个可选属性,你可以从那里开始。我在手机上,所以不知道在我的头上 -
另外,您的问题非常令人困惑,因为 PeriodicBatchingSink 是一个内部细节(当您昨天询问并删除了该问题时,这是人们无法弄清楚您在问什么的主要原因 - 的解决此类问题的方法是编辑问题,而不是删除它!)。