在Golang 中實作類似Java 中的MDC(映射診斷上下文)的日誌記錄機制並不簡單。 Go 中缺乏線程本地儲存構成了一個重大障礙。
為了規避此限制,建議的方法是透過請求堆疊傳遞 Context。這在 Golang 庫中變得越來越常見。
典型的實作涉及使用中間件向上下文添加唯一的請求 ID。以下是一個範例:
然後可以透過存取 ctx.Value("requestId") 來擷取並在整個程式碼中使用此請求 ID。
要自訂日誌記錄過程,需要使用專用的可以建立logger 函數:
透過整合各種方法,Golang 開發者可以實作一種日誌記錄機制,提供與Java 中的MDC 類似的功能,從而可以透過自訂日誌來有效追蹤並發請求。
以上是如何在Golang中實現類似MDC的日誌記錄而無需線程本地存儲?的詳細內容。更多資訊請關注PHP中文網其他相關文章!