加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang zap包使用

发布时间:2020-12-16 09:32:26 所属栏目:大数据 来源:网络整理
导读:zap是Uber开源的高性能log包。 1 package main 2 3 import ( 4 " encoding/json " 5 " fmt " 6 7 " github.com/natefinch/lumberjack " 8 " go.uber.org/zap " 9 " go.uber.org/zap/zapcore " 10 ) 11 12 // logpath 日志文件路径 13 // loglevel 日志级别 1

zap是Uber开源的高性能log包。

 1 package main
 2 
 3 import (
 4     "encoding/json"
 5     "fmt"
 6 
 7     "github.com/natefinch/lumberjack"
 8     "go.uber.org/zap"
 9     "go.uber.org/zap/zapcore"
10 )
11 
12 // logpath 日志文件路径
13 // loglevel 日志级别
14 func initLogger(logpath string,loglevel string) *zap.Logger {
15 
16     hook := lumberjack.Logger{
17         Filename:   logpath,// 日志文件路径
18         MaxSize:    128,// megabytes
19         MaxBackups: 30,// 最多保留300个备份
20         MaxAge:     7,// days
21         Compress:   true,// 是否压缩 disabled by default
22     }
23 
24     w := zapcore.AddSync(&hook)
25 
26     // 设置日志级别,debug可以打印出info,debug,warn;info级别可以打印warn,info;warn只能打印warn
27     // debug->info->warn->error
28     var level zapcore.Level
29     switch loglevel {
30     case "debug":
31         level = zap.DebugLevel
32     case "info":
33         level = zap.InfoLevel
34     case "error":
35         level = zap.ErrorLevel
36     default:
37         level = zap.InfoLevel
38     }
39     encoderConfig := zap.NewProductionEncoderConfig()
40     // 时间格式
41     encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
42     core := zapcore.NewCore(
43         zapcore.NewConsoleEncoder(encoderConfig),44         w,45         level,46     )
47 
48     logger := zap.New(core)
49     logger.Info("DefaultLogger init success")
50 
51     return logger
52 }
53 
54 type Test struct {
55     Name string `json:"name"`
56     Age  int    `json:"age"`
57 }
58 
59 func main() {
60     t := &Test{
61         Name: "xiaoming",62         Age:  12,63     }
64     data,err := json.Marshal(t)
65     if err != nil {
66         fmt.Println("marshal is failed,err: ",err)
67     }
68 
69     // 历史记录日志名字为:all-2018-11-15T07-45-51.763.log,服务重新启动,日志会追加,不会删除
70     logger := initLogger("./all.log","debug")
71     for i := 0; i < 6; i++ {
72         logger.Info(fmt.Sprint("test log ",i),zap.Int("line",47))
73         logger.Debug(fmt.Sprint("debug log ",zap.ByteString("level",data))
74         logger.Info(fmt.Sprint("Info log ",zap.String("level",`{"a":"4","b":"5"}`))
75         logger.Warn(fmt.Sprint("Info log ",`{"a":"7","b":"8"}`))
76     }
77 
78 }

all.log内容

2018-11-15T16:19:30.269+0800    info    DefaultLogger init success
2018-11-15T16:19:30.289+0800    info    test log 0      {"line": 47}
2018-11-15T16:19:30.289+0800    info    Info log 0      {"level": "{"a":"4","b":"5"}"}
2018-11-15T16:19:30.289+0800    warn    Info log 0      {"level": "{"a":"7","b":"8"}"}
2018-11-15T16:19:30.289+0800    info    test log 1      {"line": 47}
2018-11-15T16:19:30.289+0800    info    Info log 1      {"level": "{"a":"4","b":"5"}"}
2018-11-15T16:19:30.289+0800    warn    Info log 1      {"level": "{"a":"7","b":"8"}"}
2018-11-15T16:19:30.289+0800    info    test log 2      {"line": 47}
2018-11-15T16:19:30.289+0800    info    Info log 2      {"level": "{"a":"4","b":"5"}"}
2018-11-15T16:19:30.289+0800    warn    Info log 2      {"level": "{"a":"7","b":"8"}"}
2018-11-15T16:19:30.289+0800    info    test log 3      {"line": 47}
2018-11-15T16:19:30.289+0800    info    Info log 3      {"level": "{"a":"4","b":"5"}"}
2018-11-15T16:19:30.289+0800    warn    Info log 3      {"level": "{"a":"7","b":"8"}"}
2018-11-15T16:19:30.289+0800    info    test log 4      {"line": 47}
2018-11-15T16:19:30.289+0800    info    Info log 4      {"level": "{"a":"4","b":"5"}"}
2018-11-15T16:19:30.289+0800    warn    Info log 4      {"level": "{"a":"7","b":"8"}"}
2018-11-15T16:19:30.289+0800    info    test log 5      {"line": 47}
2018-11-15T16:19:30.289+0800    info    Info log 5      {"level": "{"a":"4","b":"5"}"}
2018-11-15T16:19:30.289+0800    warn    Info log 5      {"level": "{"a":"7","b":"8"}"}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读