我正在運行一個Go程式作為k8s作業。
該應用程式向elasticsearch集群發送API請求,以創建用戶,因此它將包含敏感資料(用戶的密碼)。
requestDump, err := httputil.DumpRequest(req, true)
responseDump, err := httputil.DumpResponse(resp, true)
esapiClient.log.Printf("創建用戶時得到回應代碼%d: %s
"/span>, resp.StatusCode, user.Username)
if resp.StatusCode != http.StatusOK {
esapiClient.log.Printf("error: got response code: 當創建用戶%s時,%d
"/span>, resp.StatusCode, user.Username)
esapiClient.log.Println("Request
", string(requestDump))
esapiClient.log.Println("Response
", string(responseDump))
return ErrResponseCode
}
當事情發生時,我希望能夠轉儲請求和回應(尤其是在400情況下),以檢查出錯的地方(主要是潛在的畸形請求)。
推薦的方法是什么?日志級別是解決這個問題的唯一方法嗎?
uj5u.com熱心網友回復:
日志級別是一個非解決方案。你的目標應該是不要讓PII(個人身份資訊)完全出現在你的日志轉儲中,包括當你以除錯模式啟動服務時。
取決于您如何進行日志記錄,只需在您的結構上實作相關介面,并省略或編輯包含PII的欄位。如果您需要為除錯目的獲得一些關于原始值的線索,您可以只節錄其中的一部分。
例如,如果你用fmt動詞或類似的方式記錄,你可以實作Stringer介面:
type User struct {
名字 string
密碼 string string
}
func (u User) String() string {
return fmt.Sprintf("{%s %s}"/span>, u.Name, "*****"/span>)
}
func main() {
u := User{"pkaramol"/span>, "secret"/span>}
fmt.Println(u) // {pkaramol *****}}
}
如果你用JSON登錄,實作MarshalJSON來編輯,或者使用結構標簽json:"-"來省略:
func (u User) MarshalJSON() ([]byte, 錯誤) {
return json.Marshal(map[string]interface{}{
"name": u.Name。
"password": "*****"。
})
}
func main(){
u := User{"pkaramol", "secret"}。
b, _ := json.Marshal()
fmt.Println(string(b)) // {"name": "pkaramol", "password": "*****"} }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315115.html
標籤:
