1 回答
TA贡献1836条经验 获得超3个赞
日志级别是非解决方案。您的目标应该是不要让 PII(个人身份信息)完全进入日志转储,包括当您在调试模式下启动服务时。
根据您执行日志记录的方式,只需在结构上实现相关接口,并省略或密文包含 PII 的字段。如果需要对原始值有一些了解以进行调试的字段,则只能对其进行部分密文。
例如,如果使用谓词或类似词登录,则可以实现该接口:fmtStringer
type User struct {
Name string
Password string
}
func (u User) String() string {
return fmt.Sprintf("{%s %s}", u.Name, "*****")
}
func main() {
u := User{"pkaramol", "secret"}
fmt.Println(u) // {pkaramol *****}
}
如果您登录 JSON,请实施以进行密文,或使用结构标记省略:MarshalJSONjson:"-"
func (u User) MarshalJSON() ([]byte, error) {
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":"*****"}
}
- 1 回答
- 0 关注
- 53 浏览
添加回答
举报