簡體   English   中英

Serilog:拆分大日志

[英]Serilog: split up large logs

我們使用的是 Serilog,但 docker 運行時對標准輸出的日志有 16k 的限制。 如此大的日志被寫在多行上。 FluentD 然后將每一行作為單獨的日志讀取。 這是一個已知問題

Serilog 有什么方法可以檢測到大日志消息,然后將其拆分為低於限制的較小日志?

使用 pipe 日志到的自定義接收器實現似乎可以實現您想要做的事情。 Serilog 的工作方式是,您可以“鏈接”多個接收器,以便日志條目從一個流向另一個,就像在管道中一樣。

您可以創建一個自定義接收器實現來檢查日志事件的大小,並將其拆分為多個事件以在達到閾值時進行記錄。 然后,在最后一個接收器(將日志事件推送到日志聚合器的接收器)之前添加這個新接收器。

我認為 Serilog 沒有任何原生的東西可以開箱即用地做到這一點。 您需要自己定義約束和拆分事件的邏輯(如何處理屬性等)。

如果某個特定屬性給您帶來麻煩,那么邏輯會更簡單,因為您可以只拆分該單個屬性並生成多個克隆事件(所有其他屬性保持不變),然后將有問題的消息的部分按順序傳遞給它們。

或者,如果導致問題的屬性與您不太相關,您可以在豐富器實現中修剪它們。 濃縮器可以檢查特定屬性並對其進行任何轉換。 請注意,擴充本身不能拆分事件:它是一種擴充現有日志條目的機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM