精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 語言怎么使用 Zap 日志庫(kù)?

開發(fā) 前端
本文我們通過在 Gin 構(gòu)建的應(yīng)用中,使用 Zap 記錄請(qǐng)求日志,介紹了 Zap 的使用方式,最后還通過 lumberjack 日志切割庫(kù)進(jìn)行切割日志。

?1、介紹

我們?cè)谥暗奈恼轮薪榻B過標(biāo)準(zhǔn)庫(kù) log 包的使用方式,它雖然使用方便,但是它支持的功能比較簡(jiǎn)單。

本文我們介紹 uber 開源的日志庫(kù) zap?,首先使用 Gin 框架構(gòu)建一個(gè) Web 應(yīng)用,然后通過在該 Web 應(yīng)用中記錄日志,來介紹 zap 的使用方式。

最后,我們?cè)偈褂瞄_源的日志切割庫(kù) lumberjack,進(jìn)行日志切割。

2、使用 Gin 構(gòu)建一個(gè) Web 應(yīng)用

本文重點(diǎn)不是介紹 gin 框架的使用方式,所以我們僅使用 gin 框架構(gòu)建一個(gè)簡(jiǎn)單的 Web 應(yīng)用,代碼如下:

func main() {
r := gin.Default()
r.GET("/ping", ping)
r.Run()
}

func ping(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
}

閱讀上面這段代碼,訪問 http://127.0.0.1:8080/ping?,返回結(jié)果是 {"message":"pong"}。

然后,我們使用 zap? 記錄 ping 函數(shù)的請(qǐng)求日志。

3、Gin 框架使用 zap 日志庫(kù)

Zap 支持兩種模式,分別是 SugaredLogger? 和 Logger?,其中 SugaredLogger? 模式比 Logger 模式執(zhí)行速度更快。

SugaredLogger 模式

使用 Zap 日志庫(kù),首先需要使用 New? 函數(shù)創(chuàng)建一個(gè) Logger,代碼如下:

func New(core zapcore.Core, options ...Option) *Logger

使用 New? 函數(shù),接收一個(gè) zapcore.Core? 類型的參數(shù)和一個(gè) Option? 類型的可選參數(shù),返回一個(gè) *Logger。

其中 zap.Core? 類型的參數(shù),可以使用 NewCore? 函數(shù)創(chuàng)建,接收三個(gè)參數(shù),分別是 zapcore.Encoder? 類型,zapcore.WriteSyncer? 類型和 zapcore.LevelEnabler 類型,分別用于指定日志格式、日志路徑和日志級(jí)別。

func NewCore(enc Encoder, ws WriteSyncer, enab LevelEnabler) Core

其中 zapcore.Encoder? 類型的參數(shù),可以使用 NewProductionEncoderConfig 函數(shù)創(chuàng)建,返回一個(gè)用于生產(chǎn)環(huán)境的固定日志編碼配置。

// NewProductionEncoderConfig returns an opinionated EncoderConfig for
// production environments.
func NewProductionEncoderConfig() zapcore.EncoderConfig {
return zapcore.EncoderConfig{
TimeKey: "ts",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
FunctionKey: zapcore.OmitKey,
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.EpochTimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
}
}

我們可以修改任意配置選項(xiàng)的值。

其中 zapcore.WriteSyncer? 類型的參數(shù),可以使用 AddSync? 函數(shù)創(chuàng)建,該函數(shù)接收一個(gè) io.Writer 類型的參數(shù)。

func AddSync(w io.Writer) WriteSyncer

其中 zapcore.LevelEnabler? 類型的參數(shù),可以使用 zapcore? 包定義的常量 zapcore.DebugLevel?,該常量是 zapcore.Level? 類型,并且 zapcore.Level? 類型實(shí)現(xiàn)了 zapcore.LevelEnabler 接口。

完整代碼:

var sugaredLogger *zap.SugaredLogger

func main() {
InitLogger()
defer sugaredLogger.Sync()
r := gin.Default()
r.GET("/ping", ping)
r.Run()
}

func ping(c *gin.Context) {
sugaredLogger.Debug("call func ping")
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
}

func InitLogger() {
core := zapcore.NewCore(enc(), ws(), enab())
logger := zap.New(core)
sugaredLogger = logger.Sugar()
}

func enc() zapcore.Encoder {
cfg := zap.NewProductionEncoderConfig()
cfg.TimeKey = "time"
cfg.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
return zapcore.NewJSONEncoder(cfg)
}

func ws() zapcore.WriteSyncer {
logFileName := fmt.Sprintf("./%v.log", time.Now().Format("2006-01-02"))
logFile, err := os.Create(logFileName)
if err != nil {
log.Fatal(err)
}
return zapcore.AddSync(logFile)
}

func enab() zapcore.LevelEnabler {
return zapcore.DebugLevel
}

運(yùn)行程序,執(zhí)行 curl http://127.0.0.1:8080/ping。

可以看到,生成的日志文件 xxx.log?,文件中是 json 格式的日志內(nèi)容,我們可以根據(jù)實(shí)際需求修改為其他格式。

開發(fā)中,可能我們希望日志可以同時(shí)輸出到日志文件和終端中,可以使用函數(shù) NewMultiWriteSyncer,代碼如下:

func wsV2() zapcore.WriteSyncer {
return zapcore.NewMultiWriteSyncer(ws(), zapcore.AddSync(os.Stdout))
}

除了使用 zap.New()? 創(chuàng)建 Logger? 之外,Zap 還提供了開箱即用的三種創(chuàng)建 Logger? 的方式,分別是函數(shù) NewProduction,NewDevelopment? 和 Example(),感興趣的讀者朋友們,可以試用一下。

Logger 模式

接下來,我們簡(jiǎn)單介紹一下 Logger? 模式,它主要用于性能和類型安全比較重要的場(chǎng)景中,但是,它沒有 SugaredLogger 模式簡(jiǎn)單易用,我們可以根據(jù)實(shí)際場(chǎng)景選擇使用哪種模式。

我們修改一下現(xiàn)有代碼,新創(chuàng)建 InitLoggerV2? 函數(shù),其中 enc,ws? 和 enab? 函數(shù)的代碼與 SugaredLogger 模式保持一致。

var loggerV2 *zap.Logger

func main() {
InitLoggerV2()
defer loggerV2.Sync()
r := gin.Default()
r.GET("/ping", ping)
r.Run()
}

func ping(c *gin.Context) {
loggerV2.Debug("call func ping", zap.Int("code", 200))
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
}

func InitLoggerV2() {
core := zapcore.NewCore(enc(), ws(), enab())
loggerV2 = zap.New(core)
}

閱讀上面這段代碼,我們可以發(fā)現(xiàn),在使用 zap 記錄日志時(shí),我們需要顯示指定數(shù)據(jù)類型,一般用于性能和類型安全比較重要的場(chǎng)景中。

4、zap 日志庫(kù)使用 lumberjack 庫(kù)進(jìn)行日志切割

Zap 日志庫(kù)也不支持日志切割的功能,我們可以使用 lumberjack? 日志切割庫(kù)進(jìn)行日志切割,關(guān)于 lumberjack 庫(kù)的使用方式,我們?cè)谥暗奈恼陆榻B過,此處不再重復(fù)介紹,直接上代碼:

func wsV3() zapcore.WriteSyncer {
logFileName := fmt.Sprintf("./%v.log", time.Now().Format("2006-01-02"))
lumberjackLogger := &lumberjack.Logger{
Filename: logFileName,
MaxSize: 1,
MaxBackups: 3,
MaxAge: 28,
Compress: false,
}
return zapcore.AddSync(lumberjackLogger)
}

lumberjack.Logger 的字段含義:

  • Filename 日志保存文件路徑
  • MaxSize 日志文件大小,單位是 MB
  • MaxBackups 保留的日志文件數(shù)量
  • MaxAge 日志文件的最長(zhǎng)保留時(shí)間,單位是天
  • Compress 日志文件是否需要壓縮

5、總結(jié)

本文我們通過在 Gin 構(gòu)建的應(yīng)用中,使用 Zap 記錄請(qǐng)求日志,介紹了 Zap 的使用方式,最后還通過 lumberjack 日志切割庫(kù)進(jìn)行切割日志。

參考資料:

  1. https://github.com/uber-go/zap
  2. https://pkg.go.dev/go.uber.org/zap
責(zé)任編輯:武曉燕 來源: Golang語言開發(fā)棧
相關(guān)推薦

2024-02-01 13:30:53

Go語言開發(fā)

2023-02-26 23:49:17

Go語言監(jiān)聽?zhēng)?/a>

2022-06-05 23:30:25

AES加密算法

2023-07-28 09:26:43

GolangZap

2023-04-18 08:27:16

日志級(jí)別日志包

2024-04-01 00:02:56

Go語言代碼

2022-07-03 23:07:48

Go語言參數(shù)

2022-04-13 08:20:32

DockerGo項(xiàng)目

2022-07-04 14:41:31

Go 語言變長(zhǎng)參數(shù)變長(zhǎng)參數(shù)函數(shù)

2022-05-31 08:53:29

Logger定制化Go

2023-09-26 00:57:49

Go語言日志庫(kù)

2023-01-16 00:12:20

Go語言Web

2023-07-16 23:43:05

Go語言模式

2022-10-24 00:48:58

Go語言errgroup

2023-04-02 23:13:07

Go語言bufio

2021-10-18 10:53:26

Go 代碼技術(shù)

2024-10-28 00:40:49

Go語法版本

2018-03-12 22:13:46

GO語言編程軟件

2024-01-02 10:38:22

Go語言數(shù)組

2021-07-28 07:53:21

Go語言拷貝
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩中文字幕在线视频| 久久bbxx| 福利一区在线| 亚洲另类黄色| 7777精品伊人久久久大香线蕉经典版下载| 国产二区一区| 久久久精品视频免费观看| 福利视频在线看| 亚洲免费播放| 精品国产91乱码一区二区三区 | 午夜精品一区二区三| 久久视频国产| 欧美三级三级三级爽爽爽| 麻豆久久久9性大片| 国产性猛交╳xxx乱大交| 久久资源综合| 富二代精品短视频| 久久久影院一区二区三区| 欧美精品亚洲精品日韩精品| 丁香5月婷婷久久| 亚洲一区二区三区四区不卡| eeuss一区二区三区| 免费看一级一片| 97精品久久| 亚洲久草在线视频| 操一操视频一区| 亚洲熟妇无码久久精品| 性欧美69xoxoxoxo| 欧美一级国产精品| 中国丰满熟妇xxxx性| 天堂在线观看av| 一本久道久久综合狠狠爱| 日韩亚洲精品视频| 亚洲精品午夜视频| 国产精品久久久久久妇女| 26uuu成人网一区二区三区| 国产97在线观看| 欧美美女性生活视频| 免费看日产一区二区三区| 亚洲线精品一区二区三区八戒| 亚洲人成网站在线播放2019| 国产女人18毛片水18精| 国产精品激情电影| 日韩理论片久久| 亚洲五月天综合| 欧美激情午夜| 丁香六月久久综合狠狠色| 国产91精品高潮白浆喷水| 黄色三级生活片| 国语精品视频| 91精品中文字幕一区二区三区| 少妇激情一区二区三区| 黄a在线观看| 国产精品国产馆在线真实露脸| 亚洲综合小说区| 国产精品黄色网| 99综合精品| 97免费中文视频在线观看| 亚洲女优在线观看| 日本精品国产| 色综合久久天天综合网| 在线观看日韩片| 亚洲日本香蕉视频| 国产一区二区网址| 国产精品九九九| 国产一级做a爰片在线看免费| 精品在线99| 日韩精品影音先锋| 欧美午夜aaaaaa免费视频| 337p日本欧洲亚洲大胆鲁鲁| 成人午夜视频在线观看| 国产日韩欧美精品| 国产理论片在线观看| 国产精品一级| 欧美日本高清一区| 天堂av网手机版| 亚洲ab电影| 日韩欧美国产三级电影视频| 国产女人18毛片水真多18| 91国产一区| 日本韩国精品一区二区在线观看| 国产在线观看欧美| 免费黄色在线观看| 亚洲自拍偷拍av| 伊人色综合久久天天五月婷| 国产在线高清视频| 亚洲国产婷婷综合在线精品| av黄色在线网站| 麻豆福利在线观看| 亚洲欧美aⅴ...| 成年人午夜视频在线观看| 国产福利视频在线观看| 国产精品久久一卡二卡| 日韩国产高清一区| 欧美日韩在线中文字幕| 99re在线精品| 国外成人在线视频网站| 国产日产亚洲系列最新| 成人avav影音| 电影午夜精品一区二区三区| 日本一卡二卡四卡精品| 91视频国产观看| 亚洲永久激情精品| 国产精品电影| 欧美日韩精品在线| 成年人三级黄色片| 亚洲日本中文| 亚洲欧美国产日韩天堂区| 黄色片视频免费观看| 麻豆成人入口| 日韩中文字幕久久| 麻豆成人免费视频| 视频一区免费在线观看| 国产成人精品午夜| а中文在线天堂| 日韩国产在线一| 国产精品成人国产乱一区| 亚洲精品网站在线| 99在线精品观看| 久草一区二区| 在线观看操人| 亚洲国产成人porn| 久久久噜噜噜www成人网| 欧美国产大片| 欧美日韩亚洲综合在线| 国产人妻人伦精品1国产丝袜| 宅男在线一区| 国内外成人免费激情在线视频| 国产精品视频免费播放| 国产激情一区二区三区四区 | 久久午夜老司机| 九9re精品视频在线观看re6| www.久久ai| 这里只有精品免费| 天天操天天摸天天舔| 日韩成人一区二区三区在线观看| 鲁丝一区二区三区免费| 欧美13videosex性极品| 一本一道波多野结衣一区二区| 第一页在线视频| 7777精品| 亚洲女人被黑人巨大进入| 国产无码精品一区二区| 国产成人精品免费一区二区| 久久超碰亚洲| 波多一区二区| 欧美日韩一区在线观看| 亚洲理论片在线观看| 久久欧美肥婆一二区| 欧美lavv| 国精产品一区二区三区有限公司| 制服.丝袜.亚洲.中文.综合| 91香蕉视频污在线观看| 九一九一国产精品| 久久成人资源| 成人美女大片| 欧美电影精品一区二区| 欧美片一区二区| 成人丝袜18视频在线观看| 丁香六月激情婷婷| 欧美三级午夜理伦三级在线观看 | 性欧美ⅴideo另类hd| 亚洲国产日韩一级| 中文视频在线观看| 亚洲欧美日韩在线观看a三区| 国产日产久久高清欧美一区| 成人精品在线播放| 国产精品久线观看视频| 中文字幕亚洲影院| 国产精品亚洲二区| 欧美极品美女视频网站在线观看免费| 国产精品国产精品国产| 国产精品久久久久久福利一牛影视 | 精品在线观看一区二区| 惠美惠精品网| 日韩最新中文字幕电影免费看| 99久久精品国产成人一区二区| 亚洲影院久久精品| 国内精品久久99人妻无码| 亚洲九九视频| 国产精品久久婷婷六月丁香| 天天操天天操天天| 91极品视觉盛宴| 国产女人18水真多毛片18精品| 热久久免费视频| 蜜桃91精品入口| 男女啪啪999亚洲精品| 欧美成人精品影院| 亚洲一级视频在线观看| 一区二区三区中文字幕电影| 日本高清一区二区视频| 国产精品九九| 亚洲黄色一区二区三区| 免费亚洲电影| 久久精品国产清自在天天线| 这里只有精品免费视频| 91蜜桃在线观看| 伊人色在线观看| 亚洲免费在线| 日本久久高清视频| 国产美女亚洲精品7777| 久久色精品视频| 中文字幕人妻精品一区| 亚洲一区中文在线| 国产精品成人在线视频| 成人在线一区二区三区| 91丨九色丨蝌蚪| 久久久一二三| 国产精品久久久久7777| 91青青国产在线观看精品| 欧美xxxx黑人又粗又长密月| av在线亚洲色图| 91精品久久久久久久久久| 乡村艳史在线观看| 亚洲色图激情小说| 自拍偷拍校园春色| 国产精品女主播av| 三级男人添奶爽爽爽视频| 国产精品自拍在线| 久草视频这里只有精品| heyzo欧美激情| 国产精品99久久久久久www| 高清视频在线观看三级| 欧美成人在线免费视频| 欧美三级理伦电影| 一区二区三区视频免费| 国产精品天天操| 欧美主播一区二区三区| 99久久精品久久亚洲精品| 2014亚洲片线观看视频免费| 国产chinesehd精品露脸| 九一久久久久久| 日本在线一二三区| 男女视频一区二区| 狠狠干视频网站| 极品尤物一区| 国产精品免费一区二区三区| 最新中文字幕在线播放| 97免费视频在线| 九色porny丨入口在线| 国模精品系列视频| 国产乱妇乱子在线播视频播放网站| 久久精品中文字幕电影| 国产福利视频在线观看| 欧美成人精品激情在线观看| 亚洲91av| 久久免费观看视频| 白浆在线视频| 青青久久av北条麻妃黑人| 国产在线二区| 欧美成人精品一区二区三区| 污污网站在线看| 国内精品模特av私拍在线观看| av免费不卡| 日韩视频欧美视频| 麻豆网在线观看| 欧美高清视频在线| 国产精品二线| 色爱av美腿丝袜综合粉嫩av| 成人久久久精品国产乱码一区二区 | 久久九九有精品国产23| 国产淫片在线观看| 欧美极品少妇xxxxx| 黄色激情在线播放| 国产成人在线一区二区| 欧美一级做一级爱a做片性| 午夜免费久久久久| 中文在线免费视频| 国产精品一区二区三区毛片淫片| 99色在线观看| 日产精品久久久一区二区福利| yiren22亚洲综合| 亚洲sss综合天堂久久| 国产调教精品| 日韩精品一区二区三区外面| 久久久久电影| 免费看国产一级片| 美女网站一区二区| 中文写幕一区二区三区免费观成熟| 日本网站在线观看一区二区三区| 超碰在线播放91| 国产成人久久精品77777最新版本| 国模私拍在线观看| 国产精品白丝jk白祙喷水网站| 精品少妇人妻av一区二区三区| 国产偷国产偷亚洲高清人白洁| 182在线视频| 国产农村妇女精品| 日本黄色网址大全| 136国产福利精品导航| 国产美女网站视频| 亚洲午夜成aⅴ人片| 波多野结衣网站| 欧美不卡视频一区| www三级免费| 一区二区成人av| 免费在线观看av电影| 国产精品久久久久久久久久久久久久| 视频在线一区| 亚洲国产精品一区在线观看不卡 | 精品女人视频| 亚洲午夜精品久久久中文影院av | 日本不卡一区二区在线观看| av一二三不卡影片| 一起操在线播放| 1区2区3区精品视频| 草久久免费视频| 欧美午夜精品久久久久久浪潮| 99视频在线看| 51精品秘密在线观看| 精品视频三区| 中文字幕国产亚洲2019| 无遮挡动作视频在线观看免费入口| 亚洲午夜女主播在线直播| av电影在线网| 97涩涩爰在线观看亚洲| 日韩精品一级| 中文字幕一区二区三区最新| 久久精品一本| 色免费在线视频| 久久免费精品国产久精品久久久久| 波多野结衣不卡视频| 欧美特级限制片免费在线观看| 一级α片免费看刺激高潮视频| 亚洲国产黄色片| 欧美另类自拍| 国外成人性视频| 亚洲高清999| 国产免费xxx| 精品影视av免费| 黄色裸体一级片| 欧美三区在线视频| a中文在线播放| 美女精品久久久| 豆花视频一区| 三年中文高清在线观看第6集 | 人人妻人人做人人爽| 一区二区91| 久久久久亚洲AV成人无码国产| 亚洲综合图片区| www男人的天堂| 欧美激情影音先锋| xxxx日韩| 国产3p露脸普通话对白| 成+人+亚洲+综合天堂| 亚洲精品www久久久久久| 亚洲精品在线观看视频| av在线理伦电影| 久久99国产精品99久久| 国产日韩综合| a级大片在线观看| 亚洲男女一区二区三区| av中文在线观看| 国产亚洲欧美日韩美女| 性高爱久久久久久久久| 亚洲 国产 日韩 综合一区| 好看的av在线不卡观看| 亚洲色图欧美自拍| 久久久久久久久久久久久久久99 | 99精品99久久久久久宅男| 欧美在线资源| 日韩精品一区二区三区不卡| 国产精品一卡二卡| 国产精品111| 日韩久久免费电影| 91超碰碰碰碰久久久久久综合| 一区中文字幕在线观看| 成人免费福利片| 日本中文字幕久久| 日韩在线视频网站| 亚洲大奶少妇| 少妇人妻互换不带套| 国产精品久久久久婷婷| 成人福利小视频| 日本视频久久久| 99久久.com| 国产又黄又猛又粗| 亚洲精品中文字幕在线观看| 日韩在线视频第一页| 美女av一区二区三区| 大奶一区二区三区| av免费网站观看| 亚洲免费观看高清完整版在线观看| 刘亦菲久久免费一区二区| 国产97在线观看| 欧美激情视频一区二区三区免费| 中文字幕一区二区久久人妻网站| 在线免费亚洲电影| 菠萝菠萝蜜在线观看| 欧美lavv| 国产成人在线看| 亚洲男人天堂网址| 欧美夫妻性生活视频| 国语产色综合| 亚洲精品乱码久久久久久蜜桃欧美| 欧美性淫爽ww久久久久无| 美女航空一级毛片在线播放| 色播亚洲婷婷| 91丨九色丨尤物| 性猛交xxxx乱大交孕妇印度|