serilog - 如何让 Serilog 实例立即登录到 Seq 而不必调用它的 Dispose()?

标签 serilog seq seq-logging

我有一个 Windows 服务,它处理长时间运行的任务,除非强行关闭(即计算机关闭),否则永远不会关闭。我想在 Windows 服务启动和运行的整个过程中保持相同的 Serilog 实例(出于性能原因)。

但是,我只在 Dispose() 调用后看到日志,如下所示。

var logger = new LoggerConfiguration()
            .WriteTo.Seq("http://localhost:5341")
            .CreateLogger();

logger.ForContext("TestContext", new { Machine = "TSTDB2" }, true).Information("Test");

logger.Dispose();

我不介意延迟几秒钟,但不得不等到 Serilog 实例被处理掉对我来说不起作用。任何解决方案将不胜感激。

最佳答案

By default, the Seq Sink waits for 2 seconds在检查是否有消息要发送到服务器之前,因此您需要设置periodTimeSpan.Zero如果您希望消息尽快发送。

var logger = new LoggerConfiguration()
            .WriteTo.Seq("http://localhost:5341", period: TimeSpan.Zero) // <---
            .CreateLogger();

关于serilog - 如何让 Serilog 实例立即登录到 Seq 而不必调用它的 Dispose()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46959493/

相关文章:

bash - 使用 sed 按序列分割文件。巴什

r - 在 R 中使用 seq() 生成时间序列的问题

azure - 如何将 Docker 容器日志从 Azure 应用服务发送到 Seq 日志服务器?

sql-server - 当 serilog 无法在 sql server 中插入数据时,没有收到任何错误

xamarin - 在android中,使用serilog.sinks.RollingFile时,我无法创建文件夹或将日志详细信息保存在特定文件中

elasticsearch - Serilog未登录到Elasticsearch

c# - 使用 Serilog 的 Azure 日志分析已停止日志记录(MVC 核心)

scala - 如何仅更改 Seq 的一个元素?