精品欧美一区二区三区在线观看 _久久久久国色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这里只有精品| 2025韩国大尺度电影| 久久国产黄色片| 欧美精品国产白浆久久久久| 一本久久精品一区二区| 亚洲人久久久| 免费观看黄色av| 久久天堂成人| 欧美成人激情图片网| 黄色性生活一级片| 二区三区精品| 欧美视频不卡中文| 日本女人高潮视频| 熟妇人妻一区二区三区四区| 麻豆免费精品视频| 91国内免费在线视频| 在线看的片片片免费| 欧美理伦片在线播放| 欧美精品三级在线观看| 日本免费不卡一区二区| 最新黄网在线观看| 欧美经典一区二区三区| 国产一区国产精品| 国产乱叫456在线| 日韩电影在线免费看| 欧美激情在线观看视频| 国产日产精品一区二区三区的介绍| 好吊妞视频这里有精品| 91精品在线免费| 黑森林福利视频导航| 6699嫩草久久久精品影院| 午夜激情久久| 亚洲精品视频在线播放| 免费看的av网站| av在线一区不卡| 精品欧美激情精品一区| 伊人再见免费在线观看高清版| h视频在线免费| 久久综合九色综合97婷婷女人| 俄罗斯精品一区二区| 国产口爆吞精一区二区| 秋霞影院一区二区| 国产91精品在线播放| 国产稀缺真实呦乱在线| 午夜日韩在线| 久热精品在线视频| 小嫩苞一区二区三区| 国产成人久久| 亚洲欧美综合精品久久成人| 亚洲欧美在线不卡| 精品精品国产毛片在线看| 精品美女一区二区| 欧美性猛交乱大交| 麻豆一区在线| 日韩欧美国产一区在线观看| 久久综合桃花网| 欧美a在线观看| 日韩精品一区二区三区中文精品| 午夜诱惑痒痒网| 欧美一区在线观看视频| 日韩无一区二区| 在线播放av网址| 久久99精品国产自在现线| 欧美精品一区二区三区视频| 亚洲av成人片无码| 欧美毛片免费观看| 亚洲网站视频福利| 天堂在线中文视频| 国产精品久久久久久影院8一贰佰| 色一区av在线| 欧美黄色aaa| 亚洲国产日本| 日韩美女视频中文字幕| 亚洲中文一区二区三区| 国产一区视频网站| 俄罗斯精品一区二区三区| 亚洲欧美一区二区三| 国产午夜精品一区二区三区嫩草 | 国产精品99久久久久久白浆小说| 337p粉嫩色噜噜噜大肥臀| 捆绑调教美女网站视频一区| 91传媒视频在线观看| 欧美一区二区三区激情| 久久精品一区四区| 久久国产精品免费观看| 忘忧草在线影院两性视频| 欧洲一区在线观看| 激情在线观看视频| 精品久久97| 中文字幕亚洲专区| 国内精品国产三级国产aⅴ久| 精品国产亚洲一区二区三区在线| 亚洲精品一区二区三区精华液| 欧美 日本 国产| 日韩电影在线视频| 久久久久久国产精品美女| 国产免费av一区| 激情六月婷婷综合| 久久一区二区三区欧美亚洲| 在线观看麻豆| 亚洲mv在线观看| gogogo高清免费观看在线视频| 第四色中文综合网| 中文字幕亚洲一区二区三区五十路 | 激情婷婷综合网| 精品一区二区三区中文字幕视频 | 日本在线视频站| 亚洲va欧美va国产va天堂影院| 波多结衣在线观看| aaa国产精品视频| 中文字幕综合在线| 天天操天天干视频| 国产寡妇亲子伦一区二区| 欧美一区二区三区精美影视| 天堂av资源在线观看| 欧美自拍偷拍一区| 日本黄色动态图| 中文精品久久| 国产精品女视频| 日本一区视频| 亚洲午夜久久久久| 亚洲日本黄色片| jlzzjlzz亚洲女人| 91av成人在线| 五月天婷婷视频| 亚洲无人区一区| 亚洲五月激情网| 四虎国产精品免费观看| 国产成人在线精品| 四虎精品在线| 国产激情91久久精品导航| 日韩少妇中文字幕| 性欧美又大又长又硬| 日韩久久精品一区| 动漫性做爰视频| 蜜臀av性久久久久蜜臀aⅴ| 欧美日本韩国一区二区三区| 久草在线资源站手机版| 精品国产91乱码一区二区三区 | 香港成人在线视频| 国产免费无码一区二区| 你懂的成人av| 亚洲影院高清在线| 性国产高清在线观看| 91精品黄色片免费大全| 亚洲一级生活片| 久久99精品久久久久久| 中文字幕欧美日韩一区二区三区| 精品123区| 综合国产在线观看| 一区二区三区免费在线| 国产精品久久久久一区| 亚洲三级在线观看视频| 91av精品| 96成人在线视频| gogo久久| 亚洲另类图片色| 免费又黄又爽又猛大片午夜| 欧美激情一区二区三区| 国产九九热视频| 亚洲女同中文字幕| 99在线观看| 黄视频免费在线看| 亚洲美女在线观看| 久久这里只有精品9| 国产精品久久久久久久午夜片| 天堂中文视频在线| 亚洲欧美色图| 国产亚洲二区| 欧美大片免费| 日韩中文字幕不卡视频| 国产三级三级在线观看| 亚洲一区二区影院| 成人性生交大免费看| 日本美女一区二区三区视频| 最近中文字幕免费mv| 日韩免费一级| 青青草原成人在线视频| avtt亚洲| 日韩精品一区二区三区swag| 天堂网av手机版| 欧美国产精品v| 日本女人性视频| 美日韩精品视频| 经典三级在线视频| 女同久久另类99精品国产| 国产成人激情视频| a级片国产精品自在拍在线播放| 亚洲白虎美女被爆操| 成人免费毛片视频| 亚洲欧美偷拍卡通变态| 国产二级一片内射视频播放| 久久青草久久| 天天操天天干天天玩| 理论片一区二区在线| 国产欧美一区二区三区在线看| 26uuu亚洲电影在线观看| 亚洲精品国产综合区久久久久久久| 波多野结衣视频观看| 一区二区不卡在线视频 午夜欧美不卡在| 欧美深性狂猛ⅹxxx深喉| 蜜桃精品在线观看| 国产成a人亚洲精v品在线观看| 国产精品亚洲人成在99www| 91久久精品www人人做人人爽| a一区二区三区| 欧美激情在线有限公司| 色的视频在线免费看| 亚洲国产美女精品久久久久∴| 日韩乱码一区二区三区| 黄色一区二区在线| 日本aⅴ在线观看| 国产亚洲欧洲一区高清在线观看| 26uuu国产| 久久激情综合网| 欧美牲交a欧美牲交aⅴ免费真| 午夜视频一区| 一区二区三区久久网| 综合国产视频| 国产精品久久久一区二区三区| 久久久精品一区二区毛片免费看| 2024亚洲男人天堂| 草美女在线观看| 欧美成人激情在线| 日本韩国在线视频爽| 日韩精品免费综合视频在线播放| 亚洲AV午夜精品| 日韩午夜激情视频| 91精品国产乱码久久| 在线一区二区三区四区五区| 亚洲精品视频在线观看免费视频| 亚洲激情av在线| 日韩大尺度视频| 精品在线播放免费| 国产一伦一伦一伦| 日韩av不卡一区二区| 久久无码高潮喷水| 亚洲精品专区| 日韩欧美国产综合在线| 国产精品地址| 福利精品视频| 成人日韩视频| 91精品国产综合久久香蕉最新版 | 日本道色综合久久| 日本高清不卡码| 欧美日韩亚洲国产一区 | 欧美伊人精品成人久久综合97| 草久视频在线观看| 欧美日韩黄色大片| 国产精品久久久免费视频| 亚洲成人你懂的| 日韩免费不卡视频| 精品久久久久久久久久| 久久国产精品免费看| 福利视频第一区| 久久精品国产成人av| 欧美午夜精品伦理| 蜜臀尤物一区二区三区直播| 欧美亚洲国产怡红院影院| 国产精品午夜一区二区| 欧美日韩视频在线第一区| 中文字幕在线网址| 日韩一级免费一区| 国产综合在线播放| 国产视频精品免费播放| 黄色毛片在线观看| 在线午夜精品自拍| 黄色网址在线免费观看| 欧美俄罗斯乱妇| 电影在线观看一区| 清纯唯美亚洲综合| 欧洲午夜精品| 国产欧美一区二区视频| 婷婷成人在线| 亚洲综合第一| 在线免费高清一区二区三区| av片中文字幕| 毛片av一区二区| 亚洲熟妇一区二区| 久久久久免费观看| 三上悠亚在线观看视频| 亚洲一区在线观看免费| 欧美精品二区三区| 欧美精品粉嫩高潮一区二区| 亚洲精品久久久久久久久久 | 中国毛片在线观看| 亚洲视频一区二区在线| 久久久久性色av无码一区二区| 欧美日韩亚洲精品内裤| 国产孕妇孕交大片孕| 亚洲二区中文字幕| 91社区在线观看| 韩国福利视频一区| 久久99久久久精品欧美| 国产日韩二区| 亚洲精品电影| 欧美日韩亚洲第一| 国产激情一区二区三区四区 | 欧美中文在线观看| 高清久久一区| 欧美最大成人综合网| 欧美精品成人| 午夜精品在线免费观看| 成人国产亚洲欧美成人综合网| 成人激情五月天| 亚洲成人自拍一区| 国产精品熟女久久久久久| 亚洲精品视频久久| 污视频网站在线免费| 国产精品黄色av| 玖玖玖免费嫩草在线影院一区| 亚洲一二区在线| 性娇小13――14欧美| 国产成人精品综合久久久久99| 中文字幕精品一区二区精品绿巨人| 日本天堂在线视频| 3d成人h动漫网站入口| 国产对白叫床清晰在线播放| 欧美国产日韩免费| 亚洲tv在线| 日韩亚洲欧美精品| 国产精品普通话对白| 欧美一区二区三区影院| 国产精品白丝在线| 最近中文字幕av| 亚洲视频第一页| 色戒汤唯在线观看| 国产精品免费一区二区三区在线观看 | 国产亚洲精品久久777777| 91精品国产美女浴室洗澡无遮挡| 国产女主播在线写真| 51精品在线观看| 欧美18免费视频| 三上悠亚久久精品| 国产成人精品一区二区三区网站观看| 亚洲欧美精品久久| 欧美视频中文字幕| 日韩三级影院| 国产精品人成电影在线观看| 国产亚洲一区二区三区不卡| 1024av视频| 91色porny| 好看的av在线| 亚洲欧美日韩区| 日韩成人动漫| 色姑娘综合av| 精品一区二区三区蜜桃| 激情高潮到大叫狂喷水| 欧美久久一二三四区| 欧美18一19xxx性| 91久久精品久久国产性色也91| 久久国产亚洲精品| 污网站在线免费| 亚洲卡通欧美制服中文| 亚洲第一精品网站| 欧美激情videoshd| 久久久久久久久久久久久久久久久久久久| 嫩草影院中文字幕| 成人免费的视频| 精品国产乱码一区二区| 亚洲天堂免费视频| 日本一区二区中文字幕| 水蜜桃在线免费观看| 成人禁用看黄a在线| 人妻丰满熟妇av无码区| 中日韩美女免费视频网站在线观看| 日韩高清在线| 中文字幕中文字幕一区三区| 国产盗摄视频一区二区三区| 国产精品9191| 亚洲开心激情网| 亚洲欧洲二区| 国产精品无码免费专区午夜| heyzo一本久久综合| 欧美日韩 一区二区三区| 久久久久北条麻妃免费看| 91成人精品在线| 久久久精品在线视频| 亚洲欧美自拍偷拍| 国产综合无码一区二区色蜜蜜| 日本韩国在线不卡| 天天影视天天精品| 欧美肉大捧一进一出免费视频| 日本韩国一区二区三区视频| 成人看av片| 欧美日韩电影一区二区| 韩国理伦片一区二区三区在线播放| 久久久精品99| 国产亚洲精品成人av久久ww| 亚洲精品一区二区三区中文字幕| 免费成人在线视频网站| 国产精品污污网站在线观看| 黄色片一区二区| 国产精品久久久久久亚洲调教| 欧美激情aⅴ一区二区三区| 国产aⅴ激情无码久久久无码| 欧美一区国产二区| 日韩大片免费观看| 国产盗摄视频在线观看| 欧美激情资源网|