golang zap包使用

package main

import (
    "encoding/json"
    "fmt"

    "github.com/natefinch/lumberjack"
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
)

// logpath 日志文件路径
// loglevel 日志级别
func initLogger(logpath string, loglevel string) *zap.Logger {

    hook := lumberjack.Logger{
        Filename:   logpath, // 日志文件路径
        MaxSize:    128,     // megabytes
        MaxBackups: 30,      // 最多保留300个备份
        MaxAge:     7,       // days
        Compress:   true,    // 是否压缩 disabled by default
    }

    w := zapcore.AddSync(&hook)

    // 设置日志级别,debug可以打印出info,debug,warn;info级别可以打印warn,info;warn只能打印warn
    // debug->info->warn->error
    var level zapcore.Level
    switch loglevel {
    case "debug":
        level = zap.DebugLevel
    case "info":
        level = zap.InfoLevel
    case "error":
        level = zap.ErrorLevel
    default:
        level = zap.InfoLevel
    }
    encoderConfig := zap.NewProductionEncoderConfig()
    // 时间格式
    encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
    core := zapcore.NewCore(
        zapcore.NewConsoleEncoder(encoderConfig),
        w,
        level,
    )

    logger := zap.New(core)
    logger.Info("DefaultLogger init success")

    return logger
}

type Test struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    t := &Test{
        Name: "xiaoming",
        Age:  12,
    }
    data, err := json.Marshal(t)
    if err != nil {
        fmt.Println("marshal is failed,err: ", err)
    }

    // 历史记录日志名字为:all-2018-11-15T07-45-51.763.log,服务重新启动,日志会追加,不会删除
    logger := initLogger("./all.log", "debug")
    for i := 0; i < 6; i++ {
        logger.Info(fmt.Sprint("test log ", i), zap.Int("line", 47))
        logger.Debug(fmt.Sprint("debug log ", i), zap.ByteString("level", data))
        logger.Info(fmt.Sprint("Info log ", i), zap.String("level", `{"a":"4","b":"5"}`))
        logger.Warn(fmt.Sprint("Info log ", i), zap.String("level", `{"a":"7","b":"8"}`))
    }

}

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\"}"}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值