好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 使用Lumberjack+zap進行日志切割歸檔操作

使用Lumberjack+zap進行日志切割歸檔操作

熱門標簽:谷歌美發店地圖標注 地圖區域圖標注后導出 官渡電銷外呼管理系統怎么收費 利用地圖標注位置 赤峰電銷 400開頭電話怎樣申請 杭州人工智能電銷機器人費用 江蘇呼叫中心外呼系統有效果嗎 貴州電話智能外呼系統

使用Lumberjack+zap進行日志切割歸檔

為了添加日志切割歸檔功能,我們將使用第三方庫Lumberjack來實現。

安裝

執行下面的命令安裝Lumberjack

go get -u github.com/natefinch/lumberjack

zap logger中加入Lumberjack

要在zap中加入Lumberjack支持,我們需要修改WriteSyncer代碼。我們將按照下面的代碼修改getLogWriter()函數:

func getLogWriter() zapcore.WriteSyncer {
 lumberJackLogger := lumberjack.Logger{
 Filename: "./test.log",
 MaxSize: 10,
 MaxBackups: 5,
 MaxAge:  30,
 Compress: false,
 }
 return zapcore.AddSync(lumberJackLogger)
}

Lumberjack Logger采用以下屬性作為輸入:

Filename: 日志文件的位置

MaxSize:在進行切割之前,日志文件的最大大小(以MB為單位)

MaxBackups:保留舊文件的最大個數

MaxAges:保留舊文件的最大天數

Compress:是否壓縮/歸檔舊文件

測試所有功能

package main
import (
 "net/http"
 "go.uber.org/zap"
 "go.uber.org/zap/zapcore"
 lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
var sugarLogger *zap.SugaredLogger
func main() {
 InitLogger()
 defer sugarLogger.Sync()
 for i:=0; i  10000;i++ {
 simpleHttpGet("www.baidu.com")
 simpleHttpGet("http://www.baidu.com")
 }
}
func InitLogger() {
 writeSyncer := getLogWriter()
 encoder := getEncoder()
 core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)
 logger := zap.New(core, zap.AddCaller())
 sugarLogger = logger.Sugar()
}
func getEncoder() zapcore.Encoder {
 encoderConfig := zap.NewProductionEncoderConfig()
 encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
 encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
 return zapcore.NewConsoleEncoder(encoderConfig)
}
func getLogWriter() zapcore.WriteSyncer {
 lumberJackLogger := lumberjack.Logger{
 Filename: "/aseit-data/gocode/src/gitlab.aseit.cn/AI_PRODUCT/psd_be_zhang/test/test.log", // ⽇志⽂件路徑
 MaxSize: 1,  // 1M=1024KB=1024000byte
 MaxBackups: 5,  // 最多保留5個備份
 MaxAge:  30,  // days
 Compress: false, // 是否壓縮 disabled by default
 }
 return zapcore.AddSync(lumberJackLogger)
}
func simpleHttpGet(url string) {
 sugarLogger.Debugf("Trying to hit GET request for %s", url)
 resp, err := http.Get(url)
 if err != nil {
 sugarLogger.Errorf("Error fetching URL %s : Error = %s", url, err)
 } else {
 sugarLogger.Infof("Success! statusCode = %s for URL %s", resp.Status, url)
 resp.Body.Close()
 }
}

同時,可以在main函數中循環記錄日志,測試日志文件是否會自動切割和歸檔(日志文件每1MB會切割并且在當前目錄下最多保存5個備份)。

補充:golang zap日志的使用

zap是一個高性能日志庫,github鏈接【傳送門】,下面簡單介紹一下zap的使用。

1.下載zap包

因為zap是uber開源的,zap內使用的包是在go.uber.org/zap,如果直接go get這個包,可能會提示get不下來。可以go get github.com/uber-go/zap,然后再把zap目錄復制到src/go.uber.org下(可能還會需要go.uber.org/atomic和go.uber.org/multierr,均可參考該方法get下來)

2.zap簡單封裝示例。

package logger
 
import (
 "go.uber.org/zap"
 "go.uber.org/zap/zapcore"
 "gopkg.in/natefinch/lumberjack.v2"
)
 
// error logger
var errorLogger *zap.SugaredLogger
 
var levelMap = map[string]zapcore.Level{
 "debug": zapcore.DebugLevel,
 "info": zapcore.InfoLevel,
 "warn": zapcore.WarnLevel,
 "error": zapcore.ErrorLevel,
 "dpanic": zapcore.DPanicLevel,
 "panic": zapcore.PanicLevel,
 "fatal": zapcore.FatalLevel,
}
 
func getLoggerLevel(lvl string) zapcore.Level {
 if level, ok := levelMap[lvl]; ok {
 return level
 }
 return zapcore.InfoLevel
}
 
func init() {
 fileName := "zap.log"
 level := getLoggerLevel("debug")
 syncWriter := zapcore.AddSync(lumberjack.Logger{
 Filename: fileName,
 MaxSize: 1  30, //1G
 LocalTime: true,
 Compress: true,
 })
 encoder := zap.NewProductionEncoderConfig()
 encoder.EncodeTime = zapcore.ISO8601TimeEncoder
 core := zapcore.NewCore(zapcore.NewJSONEncoder(encoder), syncWriter, zap.NewAtomicLevelAt(level))
 logger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
 errorLogger = logger.Sugar()
}
 
func Debug(args ...interface{}) {
 errorLogger.Debug(args...)
}
 
func Debugf(template string, args ...interface{}) {
 errorLogger.Debugf(template, args...)
}
 
func Info(args ...interface{}) {
 errorLogger.Info(args...)
}
 
func Infof(template string, args ...interface{}) {
 errorLogger.Infof(template, args...)
}
 
func Warn(args ...interface{}) {
 errorLogger.Warn(args...)
}
 
func Warnf(template string, args ...interface{}) {
 errorLogger.Warnf(template, args...)
}
 
func Error(args ...interface{}) {
 errorLogger.Error(args...)
}
 
func Errorf(template string, args ...interface{}) {
 errorLogger.Errorf(template, args...)
}
 
func DPanic(args ...interface{}) {
 errorLogger.DPanic(args...)
}
 
func DPanicf(template string, args ...interface{}) {
 errorLogger.DPanicf(template, args...)
}
 
func Panic(args ...interface{}) {
 errorLogger.Panic(args...)
}
 
func Panicf(template string, args ...interface{}) {
 errorLogger.Panicf(template, args...)
}
 
func Fatal(args ...interface{}) {
 errorLogger.Fatal(args...)
}
 
func Fatalf(template string, args ...interface{}) {
 errorLogger.Fatalf(template, args...)
}

3.簡單封裝后使用示例:

package main
 
import (
 "logger"
)
 
func main() {
 logger.Infof("simple zap logger example") 
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang 輸出重定向:fmt Log,子進程Log,第三方庫logrus的詳解
  • golang的time包:秒、毫秒、納秒時間戳輸出方式
  • golang 使用time包獲取時間戳與日期格式化操作
  • golang return省略用法說明
  • golang有用的庫及工具 之 zap.Logger包的使用指南

標簽:保定 泰安 武漢 松原 河池 鷹潭 黔西 宜春

巨人網絡通訊聲明:本文標題《使用Lumberjack+zap進行日志切割歸檔操作》,本文關鍵詞  使用,Lumberjack+zap,進行,日志,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Lumberjack+zap進行日志切割歸檔操作》相關的同類信息!
  • 本頁收集關于使用Lumberjack+zap進行日志切割歸檔操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产一级特黄aaa大片| 亚洲精品www久久久久久| 男人?少妇A片免费大学生| 办公室的滋味未删减版免费观看 | 九九亚洲精品| 中日韩AV片免费观看视频| 中文日产幕无线码6区免费版| 《性船》菲律宾无删减| 黄又色的视频| 哦好大好涨拨出来bl| 天天爱天天爽| 亚洲熟女乱色综合亚洲AV| 色婷婷精品久久二区二区密| 日韩国产成人精品视频人| 亲子乱视频国产免费AV| 主人调教打屁股| 国产成+人+综合+亚洲专| 国产精品xxxxbbbb18| 办公室H荡乳欲伦交换小喜 | 潘金莲太紧太爽在线阅读| 特级毛片免费视频观看| 被狠狠干| 国产精品美女午夜爽爽爽免费| 国产精品久久久久精品综合紧明星| 无毛白虎一线天| 山药双性搔痒调教放置play| a在线免费视频| 亚洲AV天堂精品一区天堂霜花店| 一区二区三区四区国产精品| 韩国甜性涩爱| 啪啪调教所29下拉式免费阅读| 中文字幕无码免费视频| 特级做a爰片毛片免线看在线| 啊啊啊啊射了| 中国特级片| 小情侣第一次尝试视频| 人妻丰满熟妇av无码区乱| 沦为奴双性产乳np虐生子改造| 色片在线观看| 国产精品20p| 国产精品福利一区二区三区|