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

三個實用細節(jié),讓Zap在Go項目中變得更好用

開發(fā) 前端
日志文件Writer初始化并設(shè)置給Zap 后我們可以測試下是否有效果,我測試的時候是先把MaxSize 改成1 , 即最大1M,隨便寫個測試方法在里面寫日志,瘋狂刷了一會兒接口讓日志文件大小超過1M。

一個項目日志功能夠不夠健全、記錄的日志內(nèi)容夠不夠有辨識度直接決定了一個項目維護的難度,你查日志是大海撈針一點點看,還是能夠靠一些有辨識度的索引篩選出用戶訪問程序期間留下的包含了完整上下文的日志直接決定了你搞明白“為什么會這樣”所耗費時間的多少。

從本節(jié)開始我們先用兩節(jié)為我們的Go項目定制日志組件,讓它足夠好用。

未來我們會用這個組件一步步完善項目的應用日志規(guī)范,讓項目框架能為我們把關(guān)鍵的上下文信息記錄到日志中,保證我們即使自己忘記打日志的情況下框架依然能為我們記錄下一些關(guān)鍵日志。

圖片圖片

本節(jié)項目的所有源碼和測試接口都單獨封存了Git版本, 方便大家在自己機器上快速調(diào)試和學習。

圖片圖片

安裝 Zap 和相關(guān)配置信息準備

Zap是Uber開源的Go日志組件,它的優(yōu)勢什么的我就不過多介紹了,這兩節(jié)介紹的內(nèi)容更多地是關(guān)注怎么給自己的項目框架定制一個比較好用日志組件,其中介紹的方法思路換做其他的Go開源日志組件也同樣適用

我們首先來安裝一下 Zap ,這個時候可以打開你自己新建的項目來跟著操作

go get go.uber.org/zap@v1.21.0

把日志寫入文件,同時完成日志文件的切割歸檔需要借助另外一個開源庫 lumberjack,我們把它也安裝一下

go get gopkg.in/natefinch/lumberjack.v2@v2.0.0

安裝完成后我們先添加幾個與日志相關(guān)的配置,好能通過配置控制日志文件的路徑和文件大小等選項

打開項目開發(fā)環(huán)境的配置文件 config/application.dev.yaml, 我們在app原配置基礎(chǔ)上,加了log相關(guān)的三個配置。

app:
  env: dev
  name: go-mall
  log:
    path: "/tmp/applog/go-mall.log"
    max_size: 100
    max_age: 60

這里注意一下,開發(fā)環(huán)境日志文件放在/tmp目錄下主要是為了避免在電腦上很多目錄的權(quán)限限制比較嚴格程序沒辦法寫日志的問題。測試環(huán)境和生存環(huán)境的日志文件路徑建議設(shè)置成 /home/applog/go-mall/go-mall.log 這樣的路徑。

配置文件加好后,相應的我們的配置對象也要根據(jù)新增配置進行調(diào)整。

type appConfig struct {
    Name string `mapstructure:"name"`
    Env  string `mapstructure:"env"`
    Log  struct {
        FilePath         string `mapstructure:"path"`
        FileMaxSize      int    `mapstructure:"max_size"`
        BackUpFileMaxAge int    `mapstructure:"max_age"`
    }
}

初始化日志組件

接下來我們先初始化Zap, 把它做為我們?nèi)罩窘M件的基礎(chǔ)Logger,配置完后我們會在其上封裝一個門面,讓Logger 變得更好用一些,通過這個門面除了能簡化我們使用Zap打日志的操作方式外,還會給日志自動追加一些追蹤和定位信息便于我們追蹤日志和定位程序問題,這個下個章節(jié)再講,本節(jié)先把基礎(chǔ)的東西做好。

接下里,先在項目中新建一個 common 目錄

.
|-- common
|   |-- enum
|   |-- logger
|-- main.go
|-- go.mod
|-- go.sum

logger目錄中先新建 zap.go 在文件中對Zap進行初始化相關(guān)的操作。

func init() {
 encoderConfig := zap.NewProductionEncoderConfig()
 encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
 encoder := zapcore.NewJSONEncoder(encoderConfig)
 fileWriteSyncer := getFileLogWriter()

 var cores []zapcore.Core
    ......
 core := zapcore.NewTee(cores...)
 _logger = zap.New(core)
}

因為Zap我們只會把它當作基礎(chǔ)Logger,所以把它的變量定義成了只能在 logger 包內(nèi)訪問的全局變量

var _logger *zap.Logger

我們都知道針對不同的運行環(huán)境,日志的最低級別不太一樣,比如說在開發(fā)環(huán)境中我們會打很多Debug日志,這個日志到生產(chǎn)環(huán)境上應該被自動過濾掉,如果不支持這個功能的話就得每次在代碼里把自己寫過的Debug日志的代碼行刪掉,這個相信誰都辦不到。

所以我們從底層Logger下手讓程序運行在服務器上時不收集Debug日志

var cores []zapcore.Core
 switch config.App.Env {
 case enum.ModeTest, enum.ModeProd:
  // 測試環(huán)境和生產(chǎn)環(huán)境的日志輸出到文件中
  cores = append(cores, zapcore.NewCore(encoder, fileWriteSyncer, zapcore.InfoLevel))
 case enum.ModeDev:
  // 開發(fā)環(huán)境同時向控制臺和文件輸出日志, Debug級別的日志也會被輸出
  cores = append(
   cores,
   zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel),
   zapcore.NewCore(encoder, fileWriteSyncer, zapcore.DebugLevel),
  )

 }

通過上面這幾行代碼的設(shè)置讓 Zap 在開發(fā)環(huán)境中可以寫Debug級別的日志,并且除了向文件里寫日志外,還同時向終端控制臺寫日志,這樣我們打的日志就能出現(xiàn)在程序運行的控制臺中,方便我們快速Debug

日志文件的管理

Zap沒有自動管理和切割日志文件的功能,這個功能我們要借助 lumberjack 這個庫。

func getFileLogWriter() (writeSyncer zapcore.WriteSyncer) {
 // 使用 lumberjack 實現(xiàn) logger rotate
 lumberJackLogger := &lumberjack.Logger{
  Filename:  config.App.Log.FilePath,
  MaxSize:   config.App.Log.FileMaxSize,      // 文件最大 100 M
  MaxAge:    config.App.Log.BackUpFileMaxAge, // 舊文件最多保留90天
  Compress:  false,
  LocalTime: true,
 }

 return zapcore.AddSync(lumberJackLogger)
}

創(chuàng)建 LumberJack 的 Logger 然后把它設(shè)置成 Zap 的 WriteSyncer ,這樣使用 Zap 打的日志就會寫到文件中

...
fileWriteSyncer := getFileLogWriter()

...
cores = append(cores, zapcore.NewCore(encoder, fileWriteSyncer, zapcore.InfoLevel))

創(chuàng)建LumberJack時可以定義日志文件的幾個選項

  • FileName 日志的路徑,這個dev環(huán)境我們使用的是/tmp/applog/go-mall.log 。測試和生產(chǎn)環(huán)境建議設(shè)置成/home/applog/{項目}/{項目}.log,一來存放在/tmp中可能會被系統(tǒng)清理,二來通過固定的目錄可以讓ELK的日志收集組件去固定目錄抽取日志文件把日志收集到統(tǒng)一的日志平臺。
  • MaxSize:單個日志文件的最大尺寸,上面配置里定義的是100 對應的尺寸是100M,日志文件達到這個大小后Lumber Jack會自動切割日志文件,把原來的日志保存到備份文件中
  • MaxAge:單位是天,設(shè)置60 就是備份文件最多保存60天

效果測試

日志文件Writer初始化并設(shè)置給Zap 后我們可以測試下是否有效果,我測試的時候是先把MaxSize 改成1 , 即最大1M,隨便寫個測試方法在里面寫日志,瘋狂刷了一會兒接口讓日志文件大小超過1M。

責任編輯:武曉燕 來源: 網(wǎng)管叨bi叨
相關(guān)推薦

2021-09-01 10:35:19

asyncawaitVue

2024-08-19 01:10:00

RedisGo代碼

2017-08-23 08:50:00

Safari瀏覽器擴展

2013-04-10 09:35:22

程序員

2015-05-18 09:50:23

swift擴展

2014-05-07 09:41:21

UbuntuTrusty Tahr

2022-05-31 08:53:29

Logger定制化Go

2011-01-19 13:11:25

Zimbra白名單證書

2011-05-10 16:27:55

網(wǎng)站優(yōu)化SEO

2009-07-16 14:12:12

IT資產(chǎn)運維管理廣通信達

2022-02-21 08:15:15

Go項目語言

2021-01-14 22:13:03

人工智能教育互聯(lián)網(wǎng)

2022-06-07 10:06:16

Windows 11任務管理器

2011-09-05 14:26:43

PhoneGap插件

2023-06-26 08:06:39

重構(gòu)代碼冗余

2010-08-24 09:10:14

Linux命令行工具

2011-07-07 17:08:55

PHP

2022-02-26 16:10:51

Figma設(shè)計工具

2009-01-10 19:38:00

服務器ServerCPU

2022-02-14 10:42:41

移動端標簽設(shè)計用戶
點贊
收藏

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

亚洲欧美激情四射在线日| 免费成人午夜视频| 99久久精品99国产精品| 黑人操亚洲女人| 国产欧美综合精品一区二区| 国产福利一区在线| 黄色av免费观看| 国产欧美日韩丝袜精品一区| 激情欧美一区二区三区在线观看| 国产精品高潮呻吟AV无码| 日韩av三级在线观看| 极品销魂美女一区二区三区| 动漫av一区二区三区| 日本一区二区三区四区高清视频| 91视频免费观看| 成人区精品一区二区不卡| 欧美日韩一道本| 91精品国产高清一区二区三区蜜臀 | 久久综合加勒比| 国产日韩中文在线| 黄页网站大全一区二区| 日本大臀精品| 精品免费二区三区三区高中清不卡 | 免费不卡av| 欧美一区二区视频在线播放| 懂色av影视一区二区三区| 久久丁香四色| 女教师淫辱の教室蜜臀av软件| 国产69精品久久久久99| 六月丁香婷婷色狠狠久久| 亚洲av无码一区二区三区性色 | 97av影视网在线观看| 久久久精品综合| 午夜影院在线观看国产主播| 一区二区在线免费看| 亚洲国产高清高潮精品美女| 午夜久久美女| 青娱乐在线免费视频| 日韩精品另类天天更新| 欧美视频精品在线| 亚洲资源网你懂的| 中文字幕第28页| 久久久久久18| 久久综合999| 中文字幕高清在线播放| 久久久精品视频国产| 欧美激情国产高清| 成人午夜短视频| av在线官网| 亚洲av网址在线| 成人午夜在线视频一区| 国产日韩欧美不卡在线| 高清一区二区| 日韩成人一区二区三区| 久久精品美女| 在线亚洲+欧美+日本专区| 日韩av免费大片| 亚洲黄色在线播放| 黄色网址在线免费播放| 国产对白在线播放| 狠狠色狠色综合曰曰| 免费毛片在线看片免费丝瓜视频| 国产探花在线看| 2024亚洲男人天堂| 亚洲免费高清视频在线| 亚洲男女网站| 久久人人爽人人爽人人片av免费| 国产婷婷一区二区三区| 亚洲人成网站免费播放| 成人av电影在线观看| 精品176极品一区| 午夜精品一区二| 中文字幕乱码一区二区三区| 欧美一级高清片| 国产综合色视频| 日韩欧美另类一区二区| 免费黄色在线网址| 久久精品国产一区二区三区日韩| 欧美午夜精品久久久久久人妖| 亚洲无线一线二线三线区别av| 国产专区在线播放| 丁香激情五月少妇| 日本不卡一区| 91福利精品视频| 日韩不卡一区二区三区| 中文字幕免费高清电视剧网站在线观看| 亚洲一级中文字幕| 国模一区二区三区私拍视频| 欧美吻胸吃奶大尺度电影| 亚洲精品黄色| 蜜桃av在线播放| 圆产精品久久久久久久久久久| 国产伦精品一区二区三区四区视频_ | 思思99re6国产在线播放| 岛国av免费观看| 99re在线视频上| 亚洲欧美在线播放| 国产精品天美传媒沈樵| 国产欧美日韩在线看| 国产精品毛片a∨一区二区三区|国 | 悠悠资源网亚洲青| 91九色02白丝porn| 日韩欧美在线免费观看视频| 黑人巨大精品| 日韩午夜在线播放| 欧美熟妇精品黑人巨大一二三区| 国产一区二区三区91| 亚洲激情自拍图| 亚洲综合第一区| 午夜日韩电影| 国产精品r级在线| 国产女人18毛片18精品| 国产成人午夜视频| 亚洲bbw性色大片| 在线看女人毛片| 亚洲成人在线网站| 57pao国产成永久免费视频| 伊人久久大香| 亚洲欧美日韩精品| 免费在线看黄网址| 麻豆国产欧美日韩综合精品二区 | 午夜综合激情| 国产精品麻豆va在线播放| 国产黄频在线观看| 久久综合久色欧美综合狠狠| 99热这里只有精品7| 91黄页在线观看| 欧美视频13p| 天天综合网久久| 国产一区二区三区国产精品| 亚洲天堂免费在线| 日韩精品久久久久久久| 国产麻豆成人传媒免费观看| 欧美人与物videos另类| av在线小说| 日韩色视频在线观看| 欧美人与禽zoz0善交| 亚洲激情在线| 国产精品久久久久久av下载红粉 | 亚洲一区二区三区综合| 久久久久久影院| 国产精品看片资源| 欧美新色视频| 五月天精品一区二区三区| 五月天丁香花婷婷| 99九九热只有国产精品| 热re99久久精品国产66热| 丰满人妻一区二区三区无码av| 久久久精品黄色| 国产女大学生av| 牛牛影视久久网| 久久久久久九九九| 丰满肉嫩西川结衣av| 亚洲欧美日韩久久精品| www.com久久久| 天天久久综合| 成人乱人伦精品视频在线观看| yw在线观看| 91久久精品一区二区| 人妻av无码一区二区三区| 香蕉成人久久| 欧美日韩综合网| 91精品xxx在线观看| 亚洲欧洲一区二区三区久久| 亚洲综合久久网| 久久综合九色综合97_久久久| 欧美 国产 小说 另类| 国产精品美女久久久久久不卡 | 亚洲综合首页| 久久91视频| 欧美刺激性大交免费视频| av中文字幕观看| 亚洲一级二级三级在线免费观看| jjzz黄色片| 中文在线不卡| 手机看片福利永久国产日韩| 性欧美freehd18| 久久精品电影网站| 亚洲乱码在线观看| 婷婷六月综合亚洲| 亚洲精品色午夜无码专区日韩| 美女免费视频一区| 潘金莲一级淫片aaaaa免费看| 91国内精品| 国产激情综合五月久久| 91sp网站在线观看入口| 日韩一区二区三区电影在线观看| 精品无码一区二区三区电影桃花| 99在线精品观看| 一级黄色录像在线观看| 精品白丝av| 日韩欧美精品久久| 国产在线不卡一区二区三区| 欧美第一淫aaasss性| 青青草超碰在线| 在线观看91精品国产麻豆| 国产av 一区二区三区| 91影院在线免费观看| 国产精品一区二区小说| 欧美视频不卡| 日韩三级在线播放| 97一区二区国产好的精华液| 欧美一级在线播放| 成人三级黄色免费网站| 欧美sm美女调教| 男人天堂视频网| 一区二区在线观看视频| 粉嫩av蜜桃av蜜臀av| 成人性视频免费网站| 天天影视色综合| 久久久久.com| 精品国产一区三区| 综合在线一区| 亚洲高清视频在线观看| 猛男gaygay欧美视频| caoporn国产精品免费公开| 激情中国色综合| 日本欧美精品在线| 国产99在线| 欧美丰满少妇xxxxx| 国产一二区在线观看| 中文字幕在线成人| 国产视频三级在线观看播放| 亚洲激情视频在线| 东京干手机福利视频| 日韩免费在线观看| 国产精品亚洲lv粉色| 欧美日韩亚洲不卡| 最新在线中文字幕| 日本乱人伦一区| 久久久久久无码精品大片| 五月激情六月综合| 日本亚洲欧美在线| 午夜久久久久久| 日韩大片免费在线观看| 亚洲国产cao| 日韩免费黄色片| 亚洲成人av在线电影| 国产精品1000| 精品久久久久久久久久久| 国产系列精品av| 黄色一区二区在线| 国产又大又黄视频| 色婷婷亚洲综合| 波多野结衣家庭主妇| 91高清在线观看| 亚洲熟妇av乱码在线观看| 欧美日韩国产中文| 国产美女无遮挡永久免费| 日韩一区二区在线免费观看| 丁香六月色婷婷| 亚洲精品久久久一区二区三区 | 一级aaaa毛片| 69av一区二区三区| 国内精品久久久久久久久久| 欧美大片日本大片免费观看| 人妻va精品va欧美va| 日韩高清av一区二区三区| 国产精品免费播放| 久久精品99久久久久久久久| av网站免费在线观看| 欧美极品少妇xxxxⅹ免费视频 | 亚洲深深色噜噜狠狠爱网站| 国产精品自拍网| 国产精品夜夜夜爽张柏芝| 51调教丨国产调教视频| 99热精品在线播放| 日韩成人精品一区二区三区| 老司机亚洲精品| 亚洲一区二区三区四区不卡| 国产亚洲欧洲在线| 国产精品成人一区二区三区| 亚洲精品国产久| 97超碰中文字幕| 中文字幕日本一区二区| 99精品国产福利在线观看免费 | 女同性αv亚洲女同志| 神马午夜精品95| jvid一区二区三区| 亚洲在线成人| 欧美第一区第二区| 亚洲成人自拍| 无码一区二区三区在线观看| 日韩网站中文字幕| 亚洲国产第一| 久久精品欧美日韩| 精品视频全国免费看| 国产精品成人一区二区三区吃奶| 久久无码高潮喷水| 99精品免费观看| 在线亚洲激情| 中文亚洲视频在线| 国产高清第一页| 亚洲视频日韩精品| 三级福利片在线观看| 国产成人综合精品| 国产精品巨作av| 中文字幕在线中文字幕日亚韩一区| 99人久久精品视频最新地址| 日韩成人av免费| 久久免费看少妇高潮| 国产少妇在线观看| 欧美性受xxxx黑人xyx| 六月婷婷中文字幕| 久久精品最新地址| 东京一区二区| 国产精品日韩高清| 我不卡神马影院| 久久精品免费网站| 99视频有精品| 国产一级做a爱免费视频| 欧美日韩成人高清| 高清av电影在线观看| 91成人福利在线| 9999久久久久| 视色,视色影院,视色影库,视色网| 日本欧美一区二区三区| av黄色免费网站| 欧美视频中文字幕在线| 人妻中文字幕一区| 欧美激情18p| 2023国产精华国产精品| 五月天色婷婷综合| 久久97超碰国产精品超碰| 谁有免费的黄色网址| 欧美日韩亚洲国产一区| 午夜福利理论片在线观看| 欧美黑人国产人伦爽爽爽| 国产精品视频一区视频二区 | 孩xxxx性bbbb欧美| 91在线一区| 日韩精品一区二区免费| 国产成人欧美日韩在线电影| 欧美国产日韩在线观看成人| 91精品国产综合久久婷婷香蕉| 免费在线午夜视频| 成人黄色中文字幕| 一区二区三区在线观看免费| 天堂av2020| 一区二区三区**美女毛片| 性生活免费网站| 久久久久久久网站| 欧美大片网址| 六月丁香婷婷在线| 国产欧美日韩精品在线| 亚洲在线免费观看视频| 久久精品青青大伊人av| 久久的色偷偷| 分分操这里只有精品| 97se亚洲国产综合自在线不卡| 国产无套丰满白嫩对白| 在线a欧美视频| 电影91久久久| 亚洲 欧美 综合 另类 中字| 成人免费观看av| 中文字字幕在线中文| 亚洲一级免费视频| 91成人小视频| 国产手机免费视频| 久久久亚洲国产美女国产盗摄| 男人天堂av在线播放| 日韩在线视频观看正片免费网站| 91精品福利观看| 欧美在线一区视频| 久久精品视频一区二区三区| 亚洲视频久久久| 欧美俄罗斯性视频| 蜜桃成人av| 成年网站免费在线观看| 亚洲综合在线第一页| 天天综合网天天综合| 国产精品成av人在线视午夜片| 久久久久亚洲| 亚洲男人在线天堂| 欧美日韩一区精品| 不卡av免费观看| 偷拍视频一区二区| 国产suv一区二区三区88区| 国产免费av一区| 爱福利视频一区| 香蕉久久夜色精品国产更新时间| 美女网站视频黄色| 亚洲国产综合在线| jyzzz在线观看视频| 国产精品手机视频| 久久精品国产第一区二区三区 | 日本久久一区二区| 污视频网站在线免费| 欧美日本韩国在线| 国产精品一区二区久激情瑜伽| 欧美一级视频免费观看| 久久精品久久久久电影| 欧美日韩夜夜| 国产不卡的av| 欧美怡红院视频| 蜜桃视频m3u8在线观看| 桥本有菜av在线| 久久精品日韩一区二区三区| 黄色小视频免费在线观看| 成人国内精品久久久久一区|