我其實滿驚訝目前好像沒有任何library有實作這個,或者有但是我找不到,所以我就實作了一個。別看這功能看起來很小巧簡單,這個需要對reflect有相當的認識,所以把製作心得記錄下來。
成品網址
需求
通常我們server boot up的時候需要印出很多log,有時候無可避免的要把整個config給印到log上,這樣會產生一個問題:要是config內含敏感資訊,如帳號跟密碼,這就會產生一些資安問題:
log.Infof("bootup with config : %+v", config)
印出來就會像這樣(標準的%+v
會印出來的格式)
{Host:192.168.1.1 User:username Password:mypassword123}
顯然,這是不太恰當的,所以我們總歸來講有幾種作法
- 把他轉json再印,把敏感的地方用
json:"-"
讓他不被印出來 - 實作
func String() string
,把敏感資料手動by key抹除掉
Leave a comment