簡體   English   中英

有沒有辦法在節奏工作流中使用 `zerolog` 記錄器而不是 `zap` 記錄器?

[英]Is there a way to use `zerolog` logger in cadence workflows instead of `zap` logger?

我知道 Cadence 使用它自己的內部非導出context 這使得很難從中獲取值,因為workflow.Contextcontext.Context之間沒有轉換。 但也許我忽略了另一種方式。

我認為這在 Cadence 中是不可能的。 在 Temporal 中,您可以使用攔截器注入任何依賴項。 此外,Temporal 將記錄器切換為接口,因此您可以使用公開的接口並將適配器寫入 zerolog 記錄器。

在 Cadence 中,您可以在 Activity 中使用任何您喜歡的記錄器,包括 zerolog。 例如,我們在 Cadence 系統工作者中使用了我們自己的花式記錄器: https://github.com/uber/cadence/blob/11547ee6db5dd306cb507b263381a6ea94c3faf1/service/worker/scanner/history/scavenger.go#L34 https://github.com/優步/節奏/blob/11547ee6db5dd306cb507b263381a6ea94c3faf1/service/worker/scanner/history/scavenger.go#L286

它具有強類型標簽,因此人們在放置標簽時不會出錯。

但在工作流程中情況有所不同。 您絕對不能簡單地直接在工作流中使用您自己的記錄器。 因為工作流可以隨時重播。 Cadence 必須確保在回復期間跳過日志記錄。 否則你可能會看到奇怪的日志。

那么,如果您想使用其他記錄器,最終會發生什么? 當前的答案是您必須實現一個接口。 在 Cadence 中你需要實現zap.Core接口,並在創建 worker 時傳遞它。 換句話說,您可以使用zerolog來實現它。 但是您不能直接在工作流代碼中使用它。 您必須使用“workflow.GetLogger()”。

暫無
暫無

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

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