Go語言日志內聚復用及gjson踩坑記錄分享

今天分享一下最近遇到的坑:

以下代碼示例使用GoFrame框架,下文簡稱為gf框架。

統一日志格式

我有個不好的習慣,不管是之前開發PHP,還是現在開發GO,都習慣在開發過程中使用dump()打印數據進行調試。

本地調試雖然爽瞭,但是上到測試環境,甚至開發環境查不到日志,無法方便的定位問題可就傻瞭。

所以,我們需要養成關鍵步驟打印日志的好習慣,而且要統一日志格式。

打印日志

scm.Log.Info("測試的日志都打印在這裡,res:%v", res)

封裝打印日志的方法

指定日志打印目錄

var Log = g.Log().Path(g.Log().GetPath() + "/scm")

通過gf提供的 g.log,再加上我們自己的封裝,就能把日志按功能模塊進行區分,方便定位問題。

內聚和復用

gf框架有一個設計:internal,即隻允許內部調用的方法。

我覺得作者設計internal,一方面是處於安全考慮,另外一方面是處於高內聚的考慮。

但是,也不要過度內聚,我今天遇到的問題就是如何更好的實現代碼復用。

所以在項目中抽取瞭公共方法目錄shared,將原本寫在internal中的可以復用的邏輯進行遷移。

gjson

今天發現一個非常好用的工具類:gjson

gjson 可以將json/xml/toml/等文件或者文件內容進行讀取,創建對象,通過get方法可以取到對象對應的值

package main
import (
   "fmt"
   "github.com/gogf/gf/encoding/gjson"
)

func main() {
   jsonContent := `{"k5":1}`
   jsonObj, err := gjson.LoadContent(jsonContent)
   if err != nil {
      panic(err)
   }
   fmt.Println(jsonObj.Get("k5"))
}

打印結果

最近又在解決很坑人的問題,一直沒能靜下心來,總是想著一定是哪些小問題導致的,總想著快速解決問題。但是這種謀求快速解決問題的心理導致一直浮在問題表面,沒有從根本上解決問題,反而一直在拖進度,讓進度越來越慢。

以上就是Go語言日志內聚復用及gjson踩坑記錄分享的詳細內容,更多關於Go日志內聚復用gjson踩坑的資料請關註WalkonNet其它相關文章!

推薦閱讀: