2017-09-16 413 views
3

当我从WinForm/web应用程序登录时,Serilog和Seq工作正常。我只在使用控制台应用程序时遇到问题。不写Log.CloseAndFlush()它不起作用。以下是我的LoggerConfiguration直到调用Log.CloseAndFlush()时,Serilog才会将日志写入Seq

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

有没有办法登录,而不必调用Log.CloseAndFlush(),使之与序列,serilog在控制台应用程序的工作。

+0

非常类似的问题[这里](https://stackoverflow.com/q/46260308/1698987)。阅读尼古拉斯链接解释它 – Noctis

回答

3

Log.CloseAndFlush()只需在应用程序退出前在控制台应用程序中调用一次即可。这是一种“关机”方法,可确保在应用程序退出前处理所有缓冲事件。

Serilog Lifecycle of Loggers文档有关于CloseAndFlush()的更多详细信息。

+0

嗨尼古拉斯, 非常感谢您的帮助。 我无法使用Logger的一次性实例,因为我正在使用LibLog。另一方面,我不会退出控制台应用程序,因为我必须在执行控制台应用程序时监听队列和进程。有没有什么方法可以在不退出应用程序并使用liblog的情况下记录消息。 – Hasibul

+0

活动只能缓冲两秒钟,所以如果应用程序仍在运行,您应该看到所有内容。 'LibLog'仅提供库的抽象 - 在控制台应用程序本身中,您需要使用Serilog的API来设置和拆除Serilog。 HTH! –

+0

非常感谢。这是工作。是的,它在2秒后记录下来,对我来说确定无误。 – Hasibul

相关问题