日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

zap+日志分级分文件+按时间切割日志整合demo

發(fā)布時(shí)間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zap+日志分级分文件+按时间切割日志整合demo 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)現(xiàn)功能

????info debug 級(jí)別的日志輸出到 /path/log/demo.log
????warn error .... 級(jí)別的日志輸出到 /path/log/demo_error.log
????日志自動(dòng)按小時(shí)分割 最多保留7天的日志

依賴(lài)的第三方包github地址

????https://github.com/uber-go/zap

????https://github.com/lestrrat-go/file-rotatelogs

?????zap提供日志分級(jí),打點(diǎn)key-value參數(shù)等功能,而file-foratelogs則提供日志自動(dòng)按時(shí)間分割的功能,github上start數(shù)比較多的 https://github.com/natefinch/lumberjack 也提供類(lèi)似功能,但是是根據(jù)文件大小分片,感覺(jué)除非借助其他工具,否則找某個(gè)時(shí)間點(diǎn)的日志時(shí),體驗(yàn)可能不是那么友好。

demo代碼

package demoimport (rotatelogs "github.com/lestrrat-go/file-rotatelogs""go.uber.org/zap""go.uber.org/zap/zapcore" )var Logger *zap.Loggerfunc init() {// 設(shè)置一些基本日志格式 具體含義還比較好理解,直接看zap源碼也不難懂encoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{MessageKey: "msg",LevelKey: "level",EncodeLevel: zapcore.CapitalLevelEncoder,TimeKey: "ts",EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {enc.AppendString(t.Format("2006-01-02 15:04:05"))}, CallerKey: "file",EncodeCaller: zapcore.ShortCallerEncoder,EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {enc.AppendInt64(int64(d) / 1000000)}, })// 實(shí)現(xiàn)兩個(gè)判斷日志等級(jí)的interfaceinfoLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {return lvl < zapcore.WarnLevel})warnLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {return lvl >= zapcore.WarnLevel})// 獲取 info、warn日志文件的io.Writer 抽象 getWriter() 在下方實(shí)現(xiàn)infoWriter := getWriter("/path/log/demo.log")warnWriter := getWriter("/path/log/demo_error.log")// 最后創(chuàng)建具體的Loggercore := zapcore.NewTee(zapcore.NewCore(*encoder, zapcore.AddSync(infoHook), infoLevel),zapcore.NewCore(*encoder, zapcore.AddSync(warnHook), warnLevel),)Logger = zap.New(core, zap.AddCaller()) // 需要傳入 zap.AddCaller() 才會(huì)顯示打日志點(diǎn)的文件名和行數(shù), 有點(diǎn)小坑 }func getWriter(filename string) io.Writer {// 生成rotatelogs的Logger 實(shí)際生成的文件名 demo.log.YYmmddHH// demo.log是指向最新日志的鏈接// 保存7天內(nèi)的日志,每1小時(shí)(整點(diǎn))分割一次日志hook, err := rotatelogs.New(filename+".%Y%m%d%H", // 沒(méi)有使用go風(fēng)格反人類(lèi)的format格式rotatelogs.WithLinkName(filename),rotatelogs.WithMaxAge(time.Hour*24*7),rotatelogs.WithRotationTime(time.Hour),) if err != nil {panic(err)} return hook }

?????zap.NewCore接收的參數(shù)是io.Writer而不是自己包的struct,開(kāi)發(fā)者可以按需傳入自己需要的io.Writer 挺好。

轉(zhuǎn)載于:https://www.cnblogs.com/Me1onRind/p/10918863.html

總結(jié)

以上是生活随笔為你收集整理的zap+日志分级分文件+按时间切割日志整合demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一区二区在线不卡 | 国产中出 | 欧美图片第一页 | 成人国产一区二区三区精品麻豆 | 99热这里只有精 | 九色精品 | 成人免费91 | 成年人看的毛片 | 国产98色在线 | 日韩 | 少妇一级淫片免费播放 | 抱着老师的嫩臀猛然挺进视频 | 日批免费看 | 手机看片日韩 | 最新国产网址 | 九热在线 | 天天干天天干天天 | 97精品超碰一区二区三区 | 精品一区二区无码 | 久久av综合| 精品无码在线观看 | 国产哺乳奶水91在线播放 | 51 吃瓜网 | 亚洲一区二区欧美 | 超碰在线中文字幕 | 国产精品乱码久久久久久久久 | av色图在线| 一本色道久久综合亚洲精品图片 | 18成人在线| 国产美女久久久 | 精品久久久久久久中文字幕 | 天堂网av手机版 | 久久电影一区二区 | 黄色片网站免费在线观看 | 亚洲中国色老太 | 国产永久在线 | 欧美xxxx精品 | 日韩av在线播放一区 | 久久免费看片 | 亚洲天堂v | 精品一区二区电影 | 日本无遮挡边做边爱边摸 | av成人免费观看 | 天堂视频免费在线观看 | 日韩av中文在线观看 | 久久精品色妇熟妇丰满人妻 | 日本高清二区 | 91亚洲精品乱码久久久久久蜜桃 | 蜜桃视频在线观看网站 | 三区在线观看 | 欧美亚色 | 韩国一级淫一片免费放 | 欧美在线不卡 | 3d欧美精品动漫xxxx无尽 | 成人av社区 | 中国老头性行为xxxx | 国产主播在线看 | 国产人人射 | 三上悠亚一区二区在线观看 | 亚洲av男人的天堂在线观看 | 亚洲字幕av一区二区三区四区 | 日批视屏 | 制服丝袜在线第一页 | 超碰在线观看免费版 | 老牛嫩草二区三区观影体验 | 亚洲一区自拍 | 午夜黄色网址 | 中国av一区 | 婷婷干 | av福利院 | 日本aaaa| 国产亚洲精品一区二区三区 | 亚洲青青草原 | 青青视频在线免费观看 | 操女人视频网站 | 老熟妇毛片 | 毛片在线视频观看 | 午夜成人鲁丝片午夜精品 | 亚洲熟女乱综合一区二区三区 | 日韩一区欧美一区 | 自拍偷拍国产视频 | 精品福利在线 | 老头糟蹋新婚少妇系列小说 | 日韩精品国产一区二区 | 99草视频 | 久久久av片 | 日韩在线观看免费高清 | 成都免费高清电影 | 亚洲无限av | 日本内谢少妇xxxxx少交 | 无码国产精品久久一区免费 | 国产精品国产 | 欧美 日韩 国产精品 | 少妇做爰免费视看片 | 成人免费视频网站在线看 | 黄色片99| 久久精品屋 | 丰满人妻一区二区三区免费 | 欧美一区二区三区免费在线观看 | 久久影院一区 |