精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲国语精品自产拍在线观看| 麻豆91在线观看| 精品国产91久久久| 国产在线视频一区| 无码国产69精品久久久久同性| 永久免费av在线| 激情综合在线| 欧美一区二区在线视频| 日韩国产欧美一区| 欧美激情黑白配| 超碰地址久久| 一区二区三区在线免费观看| 国产精品自产拍在线观看| 男人天堂av电影| 美女91在线看| av一区二区三区四区| 欧美大片免费观看| 亚洲热在线视频| 欧美日韩在线资源| 亚洲综合精品| 精品亚洲一区二区三区在线播放 | 中文久久久久久| 视频一区二区免费| 午夜精彩国产免费不卡不顿大片| 欧美羞羞免费网站| 日韩久久在线| 亚洲va在线观看| 香蕉人人精品| 日韩欧美在线中文字幕| 国产精品久久久久久免费观看 | 午夜精品免费视频| 中国黄色片视频| 丰满的护士2在线观看高清| 国产一区二区成人久久免费影院 | h片在线观看网站| 国产专区欧美精品| 欧美精品生活片| 欧美国产在线一区| 变态调教一区二区三区| 成人激情av网| 2021国产精品视频| 国产肉体xxxx裸体784大胆| 韩国成人二区| 久久婷婷一区二区三区| 国产成人一区二| 999久久久国产| 99精品美女视频在线观看热舞| 亚洲欧洲日产国码二区| 成人h在线播放| 国产情侣在线视频| 欧美精美视频| 欧美色成人综合| 欧美日韩一级在线| 黄色成人一级片| 亚洲一区免费| 日日摸夜夜添一区| 1314成人网| 国产传媒在线观看| 中文字幕精品一区| 91久久精品国产91久久性色tv| 国产无遮挡又黄又爽又色| 久久男人av| 欧美视频一区在线| 成年在线观看视频| 日本福利片高清在线观看| 日韩不卡一区二区三区| 久久成人av网站| 菠萝菠萝蜜网站| 久久91超碰青草在哪里看| 亚洲免费在线观看视频| 精品蜜桃一区二区三区| 亚洲图片视频小说| 亚洲经典三级| 久久精品国产久精国产一老狼| 日本五十肥熟交尾| 99九九久久| 五月天中文字幕一区二区| 欧美亚洲丝袜| 精品人妻午夜一区二区三区四区| 久久精品主播| 欧美大片免费看| xxxx日本黄色| 国产精品毛片av| 欧美日韩久久一区二区| 久久国产精品视频在线观看| 欧美三级黄网| 久久综合视频网| 99国精产品一二二线| 精品人妻无码一区二区性色| 国产真实久久| 色噜噜久久综合伊人一本| 国产真实乱人偷精品| 亚洲精品一区二区在线播放∴| 欧美日韩国产精品一区| 久久国产精品免费观看| 成人在线二区| ww亚洲ww在线观看国产| 国产精品国色综合久久| 国产免费无遮挡| 免费在线看一区| 538国产精品视频一区二区| 欧美精品色哟哟| 久久亚洲国产| 中文日韩在线观看| 免费人成又黄又爽又色| 亚洲动漫精品| 亚洲国产日韩欧美在线图片| 免费国偷自产拍精品视频| 成人黄色免费观看| 在线观看日韩电影| 毛片av免费在线观看| av在线最新| 一区二区国产盗摄色噜噜| 正义之心1992免费观看全集完整版| 国产视频三级在线观看播放| 国产亚洲一区二区三区在线观看| 牛人盗摄一区二区三区视频| 日韩a在线观看| 99国产一区二区三精品乱码| 国产精品一区在线观看| 亚洲国产中文字幕在线| 福利电影一区二区三区| 91视频网页| 亚洲黄色在线播放| 粉嫩av一区二区三区粉嫩| 99超碰麻豆| 天堂中文字幕av| 91在线免费播放| 欧美精品一区二区三区久久| 黄网在线观看| 中文字幕高清一区| 中日韩在线视频| 怡红院av在线| 午夜视频在线观看一区| 缅甸午夜性猛交xxxx| 成人免费午夜电影| 精品视频一区二区在线观看| 影音先锋久久资源网| 色综合久久悠悠| 国产乡下妇女做爰视频| 校园春色综合网| 国产国语videosex另类| 中文在线免费观看| 国产自产视频一区二区三区| 97伦理在线四区| 免费观看的毛片| 久久嫩草精品久久久精品一| 深田咏美在线x99av| 免费a在线看| 亚洲一区二区综合| 北条麻妃在线观看| 欧美aaaaaa| 日韩欧美中文字幕公布| 日本japanese极品少妇| 精品亚洲成人| 欧美另类99xxxxx| 奇米影视第四色777| 老**午夜毛片一区二区三区| 成人www视频在线观看| 国产wwwwwww| 久久女同精品一区二区| 国产卡一卡二在线| 国内精彩免费自拍视频在线观看网址| 在线观看免费一区| 下面一进一出好爽视频| 精品国产91乱码一区二区三区四区 | 中文字幕久热精品视频在线| 日韩影院一区二区| 久久国产福利| 亚洲伊人久久综合| 免费在线性爱视频| 一区二区三区不卡在线观看| 国产淫片av片久久久久久| 国产专区精品| 亚洲视频999| 免费在线看黄网址| 日本亚洲三级在线| 精品亚洲一区二区三区四区五区高 | 国产激情一区二区三区| 欧美综合激情| 欧美寡妇性猛交xxx免费| 色婷婷综合久色| 一区二区三区人妻| 久久密一区二区三区| 国内免费久久久久久久久久久| 怡红院男人天堂| 99精品视频免费在线观看| 欧美一级黄色录像片| 欧美日韩免费看片| 亚洲成人三级在线| 欧美黄色aaa| 老司机午夜精品视频在线观看| 国产精品久久久对白| 欧美尤物美女在线| 欧美综合在线视频| 国产传媒第一页| 欧美天天视频| 91av免费看| 免费a级毛片在线播放| 欧美亚洲综合在线| 波多野吉衣中文字幕| 日韩一区二区久久| 成人国产一区二区| 天堂av中文在线| 欧美精品v日韩精品v韩国精品v| 少妇人妻好深好紧精品无码| 久久成人一区| 免费不卡亚洲欧美| 黄色在线网站噜噜噜| 精品国产成人系列| wwwav国产| 国产成人a级片| wwwwww欧美| 日韩中文字幕无砖| 成人97在线观看视频| 国产精品视频一区二区三区,| 国产精品久久久久久久久免费樱桃| 欧洲av无码放荡人妇网站| 欧美三级午夜理伦三级小说| 97视频在线观看免费| 欧日韩在线视频| 欧美日韩一区二区在线| 成人精品999| 日韩国产欧美在线观看| 日本精品免费| 99久久综合国产精品二区| 国产亚洲人成a一在线v站| 激情网站在线观看| 欧美激情一区二区三区不卡| 午夜国产一区二区三区| 欧美r级电影| 91欧美日韩一区| 日本乱理伦在线| 日韩av在线免播放器| 亚洲精品男人的天堂| 国产日韩精品久久久| 欧美成人福利在线观看| 午夜片欧美伦| 国产高清一区视频| 香蕉伊大人中文在线观看| 亚洲人成在线观看| 国产裸体无遮挡| 亚洲国产视频在线| 国产激情在线免费观看| 秋霞av亚洲一区二区三| 日韩一级片一区二区| 精品按摩偷拍| 欧美一区二区大胆人体摄影专业网站| 免费在线超碰| 欧美一区二区在线播放| 日韩美女黄色片| 国产精品色哟哟| 交换做爰国语对白| 在线一区欧美| 亚洲人一区二区| 丁香一区二区| 国产精品成人一区二区| 国产日产一区二区三区| 日韩精品中文字幕有码专区| 在线观看中文字幕2021| 亚洲精品你懂的| 捆绑裸体绳奴bdsm亚洲| 日韩**一区毛片| 日韩精品在线观看av| 精品免费一区二区| 亚洲自拍偷拍区| 国产亚洲一区二区手机在线观看 | 在线亚洲成人| 久久久一二三四| 色天天色综合| 91在线免费网站| 中文字幕影音在线| 久久精品亚洲一区| 免费国产在线观看| 亚洲成人久久一区| 国产又粗又长视频| 91久久香蕉国产日韩欧美9色| 欧美成人精品欧美一级私黄| 久久久www免费人成精品| 成人啪啪18免费游戏链接| 久久这里只有| 亚洲精品成人三区| 奇米影视777在线欧美电影观看| 91精品中国老女人| 成人看片网站| 2019中文字幕在线观看| 成年网站在线视频网站| 日韩日本欧美亚洲| 大乳在线免费观看| 日韩精品中文字幕久久臀| 亚洲第一视频在线| 日韩午夜小视频| 国产内射老熟女aaaa∵| 欧美午夜精品免费| 天天射天天干天天| 欧美午夜片欧美片在线观看| 国产乱码久久久久久| 亚洲综合自拍偷拍| 欧美精品入口蜜桃| 一区二区三区国产| 国产女人18水真多毛片18精品| 国产精品久久久久久久久果冻传媒 | 激情小说亚洲| 国产精品美女呻吟| 日韩中文视频| 国产精品久久久久av| 欧美舌奴丨vk视频| 国产成人精品视频| 香蕉视频亚洲一级| 日本视频久久久| 精品国产第一福利网站| 4p变态网欧美系列| 美女的胸无遮挡在线观看| 国内精品美女av在线播放| 国内小视频在线看| 欧美精品第一页在线播放| 欧美黑人猛交的在线视频| 久久91超碰青草是什么| 国产高清在线a视频大全| 久久久视频在线| 91黄页在线观看| 26uuu久久噜噜噜噜| 欧美极品影院| 国产精品久久久久av免费| 视频精品导航| 国产伦精品免费视频| 国产精品天堂蜜av在线播放| 国产综合香蕉五月婷在线| 欧美视频免费看| 91高跟黑色丝袜呻吟在线观看| 日本免费一区二区视频| 成人午夜电影在线播放| 九九热播视频在线精品6| 精品一区二区国产| 国产一区不卡| 中文字幕免费在线不卡| 中文精品久久| 国产毛片视频网站| 国产精品久久久久久久免费软件 | 亚洲免费高清视频| seseavlu视频在线| 俺去了亚洲欧美日韩| 日韩影视在线| 国产99视频在线观看| 国产人妖一区| 免费成人网www| 成人在线观看91| 台湾佬综合网| 一区二区三区在线观看www| 91成人精品| av免费观看网| 久久精品免费观看| 成人欧美精品一区二区| 久久久青草青青国产亚洲免观| 91免费在线看片| 一区二区三区在线免费观看| 久久久精品视频网站| 欧美精品第一页| 香港一级纯黄大片| 久久精品一本久久99精品| 欧美巨大丰满猛性社交| 国产欧美日韩免费看aⅴ视频| 在线视频亚洲欧美中文| 日本一区二区不卡高清更新| 综合久久精品| 黄色片视频在线播放| 国产在线视频精品一区| 成年人网站免费看| 亚洲人123区| 久久久黄色大片| 欧美一级xxx| 国产一级免费在线观看| 蜜臀久久99精品久久久无需会员 | 最新av免费在线观看| 不卡一卡二卡三乱码免费网站| 国产精品1区2区3区4区| 午夜精品国产更新| 国产三级视频在线播放| 亚洲男人天堂久| 女囚岛在线观看| 国产精品亚洲自拍| 色综合久久中文| 国产制服91一区二区三区制服| 日本午夜一本久久久综合| 亚洲色偷偷色噜噜狠狠99网| 亚洲欧洲美洲综合色网| 自拍偷拍第八页| 亚洲美女av网站| 福利成人导航| 动漫3d精品一区二区三区| 91亚洲国产成人久久精品| 男人天堂1024| 成人综合在线网站| 四虎永久免费在线| 欧美日韩国产经典色站一区二区三区| 欧美色视频免费| 欧美在线视频在线播放完整版免费观看| 亚洲超碰在线观看| 在线观看av的网址| 九色|91porny|