Zap日志库

参考

  • https://github.com/uber-go/zap
  • https://godoc.org/go.uber.org/zap

安装

go get -u github.com/uber-go/zap

示例

NewProduction

func main() {
    var i8 int8 = 10
    var str = "string"
    any := struct {
        I int `json:"int"`
        S string
    }{
        I: 1,
        S: "str",
    }

    pl, _ := zap.NewProduction()

    pl.With(zap.Namespace("namespace")).Named("name").Warn("NewProduction name", zap.Any("any", any))
    //pl.Fatal("NewProduction")
    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        pl.Panic("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    }()
    pl.DPanic("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    pl.Error("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    pl.Warn("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    pl.Info("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    pl.With(zap.Int8("i8", i8)).Info("NewProduction", zap.Any("any", any), zap.String("str", str))
    pl.Info("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str), zap.Namespace("namespace"))
    pl.Info("NewProduction", zap.Namespace("namespace"), zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    pl.Debug("NewProduction", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
}

结果

{"level":"warn","ts":1526455361.749451,"logger":"name","caller":"helloworld/cmd.go:62","msg":"NewProduction name","namespace":{"any":{"int":1,"S":"str"}}}
{"level":"dpanic","ts":1526455361.7494962,"caller":"helloworld/cmd.go:74","msg":"NewProduction","i8":10,"any":{"int":1,"S":"str"},"str":"string","stacktrace":"main.main\n\t/home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:74\nruntime.main\n\t/opt/golang/go1.10.1/src/runtime/proc.go:198"}
{"level":"error","ts":1526455361.749533,"caller":"helloworld/cmd.go:75","msg":"NewProduction","i8":10,"any":{"int":1,"S":"str"},"str":"string","stacktrace":"main.main\n\t/home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:75\nruntime.main\n\t/opt/golang/go1.10.1/src/runtime/proc.go:198"}
{"level":"warn","ts":1526455361.7495432,"caller":"helloworld/cmd.go:76","msg":"NewProduction","i8":10,"any":{"int":1,"S":"str"},"str":"string"}
{"level":"info","ts":1526455361.749549,"caller":"helloworld/cmd.go:77","msg":"NewProduction","i8":10,"any":{"int":1,"S":"str"},"str":"string"}
{"level":"info","ts":1526455361.7495563,"caller":"helloworld/cmd.go:78","msg":"NewProduction","i8":10,"any":{"int":1,"S":"str"},"str":"string"}
{"level":"info","ts":1526455361.7495608,"caller":"helloworld/cmd.go:79","msg":"NewProduction","i8":10,"any":{"int":1,"S":"str"},"str":"string","namespace":{}}
{"level":"info","ts":1526455361.749565,"caller":"helloworld/cmd.go:80","msg":"NewProduction","namespace":{"i8":10,"any":{"int":1,"S":"str"},"str":"string"}}

NewDevelopment

func main() {
    var i8 int8 = 10
    var str = "string"
    any := struct {
        I int `json:"int"`
        S string
    }{
        I: 1,
        S: "str",
    }

    dl, _ := zap.NewDevelopment()

    //dl.Fatal("NewDevelopment")
    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        dl.Panic("NewDevelopment", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    }()
    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        dl.DPanic("NewDevelopment", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    }()
    dl.Error("NewDevelopment", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    dl.Warn("NewDevelopment", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    dl.Info("NewDevelopment", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))
    dl.Debug("NewDevelopment", zap.Int8("i8", i8), zap.Any("any", any), zap.String("str", str))    
}

结果

2018-05-16T15:23:44.008+0800    ERROR   helloworld/cmd.go:102   NewDevelopment  {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:102
runtime.main
    /opt/golang/go1.10.1/src/runtime/proc.go:198
2018-05-16T15:23:44.008+0800    PANIC   helloworld/cmd.go:92    NewDevelopment  {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main.func1
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:92
2018-05-16T15:23:44.008+0800    WARN    helloworld/cmd.go:103   NewDevelopment  {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:103
runtime.main
    /opt/golang/go1.10.1/src/runtime/proc.go:198
2018-05-16T15:23:44.008+0800    INFO    helloworld/cmd.go:104   NewDevelopment  {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
2018/05/16 15:23:44 NewDevelopment
2018-05-16T15:23:44.008+0800    DEBUG   helloworld/cmd.go:105   NewDevelopment  {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}

NewDevelopment Sugar

func main() {
    var i8 int8 = 10
    var str = "string"
    any := struct {
        I int `json:"int"`
        S string
    }{
        I: 1,
        S: "str",
    }

    dl, _ := zap.NewDevelopment()
    dls := dl.Sugar()

    //dls.Fatal("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        dls.Panicw("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    }()
    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        dls.DPanicw("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    }()
    dls.Errorw("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    dls.Warnw("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    dls.Infow("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    dls.Debugw("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)


    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        dls.Panic("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    }()
    go func() {
        defer func() {
            if err := recover(); err != nil {
                log.Println(err)
            }
        }()
        dls.DPanic("Sugar NewDevelopment", "i8", i8, "any", any, "str", str)
    }()
    dls.Error("Sugar NewDevelopment", "i8", i8, "any", any, "str", str, "end")
    dls.Warn("Sugar NewDevelopment", "i8", i8, "any", any, "str", str, "end")
    dls.Info("Sugar NewDevelopment", "i8", i8, "any", any, "str", str, "end")
    dls.Debug("Sugar NewDevelopment", "i8", i8, "any", any, "str", str, "end") 
}

结果

2018-05-16T15:24:30.878+0800    ERROR   helloworld/cmd.go:126   Sugar NewDevelopment    {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:126
runtime.main
    /opt/golang/go1.10.1/src/runtime/proc.go:198
2018-05-16T15:24:30.878+0800    DPANIC  helloworld/cmd.go:124   Sugar NewDevelopment    {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main.func2
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:124
2018/05/16 15:24:30 Sugar NewDevelopment
2018-05-16T15:24:30.878+0800    WARN    helloworld/cmd.go:127   Sugar NewDevelopment    {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:127
runtime.main
    /opt/golang/go1.10.1/src/runtime/proc.go:198
2018-05-16T15:24:30.878+0800    INFO    helloworld/cmd.go:128   Sugar NewDevelopment    {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
2018-05-16T15:24:30.878+0800    DEBUG   helloworld/cmd.go:129   Sugar NewDevelopment    {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
2018-05-16T15:24:30.878+0800    ERROR   helloworld/cmd.go:148   Sugar NewDevelopmenti810any{1 str}strstringend
main.main
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:148
runtime.main
    /opt/golang/go1.10.1/src/runtime/proc.go:198
2018-05-16T15:24:30.878+0800    PANIC   helloworld/cmd.go:116   Sugar NewDevelopment    {"i8": 10, "any": {"int":1,"S":"str"}, "str": "string"}
main.main.func1
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:116
2018/05/16 15:24:30 Sugar NewDevelopment
2018-05-16T15:24:30.878+0800    WARN    helloworld/cmd.go:149   Sugar NewDevelopmenti810any{1 str}strstringend
main.main
    /home/obe/Documents/coding/golang/src/gitee.com/microsevice/helloworld/cmd.go:149
runtime.main
    /opt/golang/go1.10.1/src/runtime/proc.go:198
2018-05-16T15:24:30.878+0800    INFO    helloworld/cmd.go:150   Sugar NewDevelopmenti810any{1 str}strstringend
2018-05-16T15:24:30.878+0800    DEBUG   helloworld/cmd.go:151   Sugar NewDevelopmenti810any{1 str}strstringend

你可能感兴趣的:(Zap日志库)