2016-09-12 22 views
1

我有一個自定義接收器寫入Azure隊列存儲器,對於某些事件,尤其是在解構大型實例時,我們達到了Azure對排隊消息的大小限制(對於Base64編碼消息,爲64KB或48KB) 。將消息放入隊列時發生異常。我需要避免異常並截斷消息以適應。Serilog是否有辦法限制logEvent的整體大小?

Serilog是否有內置的方法來幫助限制LogEvent的整體大小,還是我們必須自己編寫限制器?

回答

0

這需要在接收器級別實現,因爲不同的表示有不同的大小要求。有一個JSON的大小限制的例子:https://github.com/serilog/serilog-sinks-seq/blob/dev/src/Serilog.Sinks.Seq/Sinks/Seq/SeqSink.cs#L147

Serilog也有Destructure.ToMaximumDepth(n),但是這對於您所尋找的控件來說不夠精確。

+0

我按照建議在我的接收器中實現了一些自定義的東西,它工作得很好。原來,這種方法需要一個非常具體的優化,因爲它取決於序列化類型(在我的情況下它的JSON),你必須使用一種算法來縮短你正在序列化的對象屬性的一些優先級列表以適應極限。 (即你不能截斷JSON流)。在我的情況下,我在縮短郵件內容之前先按大小順序縮短屬性。 –

+0

酷!很高興聽到你解決它。 –

相關問題