Go語(yǔ)言日志內(nèi)聚復(fù)用及gjson踩坑記錄分享
今天分享一下最近遇到的坑:
以下代碼示例使用GoFrame框架,下文簡(jiǎn)稱為gf框架。
統(tǒng)一日志格式
我有個(gè)不好的習(xí)慣,不管是之前開(kāi)發(fā)PHP,還是現(xiàn)在開(kāi)發(fā)GO,都習(xí)慣在開(kāi)發(fā)過(guò)程中使用dump()打印數(shù)據(jù)進(jìn)行調(diào)試。
本地調(diào)試雖然爽了,但是上到測(cè)試環(huán)境,甚至開(kāi)發(fā)環(huán)境查不到日志,無(wú)法方便的定位問(wèn)題可就傻了。
所以,我們需要養(yǎng)成關(guān)鍵步驟打印日志的好習(xí)慣,而且要統(tǒng)一日志格式。
打印日志
scm.Log.Info("測(cè)試的日志都打印在這里,res:%v", res)
封裝打印日志的方法
指定日志打印目錄
var Log = g.Log().Path(g.Log().GetPath() + "/scm")
通過(guò)gf提供的 g.log,再加上我們自己的封裝,就能把日志按功能模塊進(jìn)行區(qū)分,方便定位問(wèn)題。
內(nèi)聚和復(fù)用
gf框架有一個(gè)設(shè)計(jì):internal,即只允許內(nèi)部調(diào)用的方法。
我覺(jué)得作者設(shè)計(jì)internal,一方面是處于安全考慮,另外一方面是處于高內(nèi)聚的考慮。
但是,也不要過(guò)度內(nèi)聚,我今天遇到的問(wèn)題就是如何更好的實(shí)現(xiàn)代碼復(fù)用。
所以在項(xiàng)目中抽取了公共方法目錄shared,將原本寫在internal中的可以復(fù)用的邏輯進(jìn)行遷移。
gjson
今天發(fā)現(xiàn)一個(gè)非常好用的工具類:gjson
gjson 可以將json/xml/toml/等文件或者文件內(nèi)容進(jìn)行讀取,創(chuàng)建對(duì)象,通過(guò)get方法可以取到對(duì)象對(duì)應(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é)果

最近又在解決很坑人的問(wèn)題,一直沒(méi)能靜下心來(lái),總是想著一定是哪些小問(wèn)題導(dǎo)致的,總想著快速解決問(wèn)題。但是這種謀求快速解決問(wèn)題的心理導(dǎo)致一直浮在問(wèn)題表面,沒(méi)有從根本上解決問(wèn)題,反而一直在拖進(jìn)度,讓進(jìn)度越來(lái)越慢。
以上就是Go語(yǔ)言日志內(nèi)聚復(fù)用及gjson踩坑記錄分享的詳細(xì)內(nèi)容,更多關(guān)于Go日志內(nèi)聚復(fù)用gjson踩坑的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文帶你了解Golang中類型轉(zhuǎn)換庫(kù)cast的使用
你是否在使用 Go 的過(guò)程中因?yàn)轭愋娃D(zhuǎn)換的繁瑣而苦惱過(guò)?你是否覺(jué)得 Go 語(yǔ)言中的類型斷言可能會(huì) panic 而對(duì)自己寫的代碼有那么一點(diǎn)點(diǎn)不放心?本文就為大家推薦一個(gè)用于類型轉(zhuǎn)換的第三方庫(kù) cast 絕對(duì)是一個(gè)值得嘗試的選擇2023-02-02
提升編程技能:學(xué)習(xí)如何在Go語(yǔ)言中正確格式化時(shí)間
想知道如何在Go語(yǔ)言中輕松地格式化時(shí)間嗎?別再浪費(fèi)時(shí)間了!本文將帶你快速入門,讓你的代碼更加優(yōu)雅高效,快來(lái)學(xué)習(xí)吧!2024-01-01
golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn)
這篇文章給大家介紹了golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn),文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
golang結(jié)合mysql設(shè)置最大連接數(shù)和最大空閑連接數(shù)
本文介紹golang?中連接MySQL時(shí),如何設(shè)置最大連接數(shù)和最大空閑連接數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用
這篇文章主要介紹了簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用,是golang入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10
Go?gRPC進(jìn)階教程服務(wù)超時(shí)設(shè)置
這篇文章主要為大家介紹了Go?gRPC進(jìn)階,gRPC請(qǐng)求的超時(shí)時(shí)間設(shè)置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

