我有一个 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在检查是否有消息要发送到服务器之前,因此您需要设置period
至 TimeSpan.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/