2017-09-16 437 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

相關問題