Go語言日志內(nèi)聚復(fù)用及gjson踩坑記錄分享
今天分享一下最近遇到的坑:
以下代碼示例使用GoFrame框架,下文簡稱為gf框架。
統(tǒng)一日志格式
我有個不好的習(xí)慣,不管是之前開發(fā)PHP,還是現(xiàn)在開發(fā)GO,都習(xí)慣在開發(fā)過程中使用dump()打印數(shù)據(jù)進(jìn)行調(diào)試。
本地調(diào)試雖然爽了,但是上到測試環(huán)境,甚至開發(fā)環(huán)境查不到日志,無法方便的定位問題可就傻了。
所以,我們需要養(yǎng)成關(guān)鍵步驟打印日志的好習(xí)慣,而且要統(tǒng)一日志格式。
打印日志
scm.Log.Info("測試的日志都打印在這里,res:%v", res)
封裝打印日志的方法
指定日志打印目錄
var Log = g.Log().Path(g.Log().GetPath() + "/scm")
通過gf提供的 g.log,再加上我們自己的封裝,就能把日志按功能模塊進(jìn)行區(qū)分,方便定位問題。
內(nèi)聚和復(fù)用
gf框架有一個設(shè)計:internal,即只允許內(nèi)部調(diào)用的方法。
我覺得作者設(shè)計internal,一方面是處于安全考慮,另外一方面是處于高內(nèi)聚的考慮。
但是,也不要過度內(nèi)聚,我今天遇到的問題就是如何更好的實(shí)現(xiàn)代碼復(fù)用。
所以在項(xiàng)目中抽取了公共方法目錄shared,將原本寫在internal中的可以復(fù)用的邏輯進(jìn)行遷移。
gjson
今天發(fā)現(xiàn)一個非常好用的工具類:gjson
gjson 可以將json/xml/toml/等文件或者文件內(nèi)容進(jìn)行讀取,創(chuàng)建對象,通過get方法可以取到對象對應(yīng)的值
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")) }
打印結(jié)果
最近又在解決很坑人的問題,一直沒能靜下心來,總是想著一定是哪些小問題導(dǎo)致的,總想著快速解決問題。但是這種謀求快速解決問題的心理導(dǎo)致一直浮在問題表面,沒有從根本上解決問題,反而一直在拖進(jìn)度,讓進(jìn)度越來越慢。
以上就是Go語言日志內(nèi)聚復(fù)用及gjson踩坑記錄分享的詳細(xì)內(nèi)容,更多關(guān)于Go日志內(nèi)聚復(fù)用gjson踩坑的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
go并發(fā)編程sync.Cond使用場景及實(shí)現(xiàn)原理
這篇文章主要為大家介紹了go并發(fā)編程sync.Cond使用場景及實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08go實(shí)現(xiàn)整型的二進(jìn)制轉(zhuǎn)化的方法
這篇文章主要介紹了go實(shí)現(xiàn)整型的二進(jìn)制轉(zhuǎn)化的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07golang中channel+error來做異步錯誤處理有多香
官方推薦golang中錯誤處理當(dāng)做值處理, 既然是值那就可以在channel中傳輸,這篇文章主要介紹了golang 錯誤處理channel+error真的香,需要的朋友可以參考下2023-01-01golang實(shí)現(xiàn)微信支付v3版本的方法
這篇文章主要介紹了golang實(shí)現(xiàn)微信支付v3版本的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03golang實(shí)現(xiàn)redis的延時消息隊列功能示例
這篇文章主要介紹了golang實(shí)現(xiàn)redis的延時消息隊列功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Golang連接池的幾種實(shí)現(xiàn)案例小結(jié)
這篇文章主要介紹了Golang連接池的幾種實(shí)現(xiàn)案例小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03