zoukankan      html  css  js  c++  java
  • zap 日志

    package main

    import (
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    "net/http"
    "github.com/natefinch/lumberjack"
    )

    var sugarLogger *zap.SugaredLogger

    func main() {
    InitLogger()
    defer sugarLogger.Sync()
    for i := 0; i < 100000; i++ {
    sugarLogger.Info("test for log '''")
    }
    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)
    //增加目录
    logger := zap.New(core, zap.AddCaller())
    sugarLogger = logger.Sugar()
    

    }

    func getEncoder() zapcore.Encoder {
    //json格式
    //return zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig())
    //普通的打印
    //return zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig())
    encoderConfig := zap.NewProductionEncoderConfig()
    encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
    encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
    return zapcore.NewConsoleEncoder(encoderConfig)
    }
    /*
    func getLogWriter() zapcore.WriteSyncer {
    //file, _ := os.Create("./test.log")
    //追加模式
    file, _ := os.OpenFile("./test.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0744)
    return zapcore.AddSync(file)
    }*/
    //切割日志
    func getLogWriter() zapcore.WriteSyncer {
    lumberJackLogger := &lumberjack.Logger{
    Filename: "./test.log",
    MaxSize: 1, //M
    MaxBackups: 5, //数量
    MaxAge: 30, //天数
    Compress: false,
    }
    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()
    }
    }

  • 相关阅读:
    SpringBoot读取Resource下文件的几种方式(十五)
    Springboot+vue前后端分离文件上传、下载方式及与Spring的异同(十四)
    springboot多个service互相调用的事务处理(十三)
    Bigdecimal用法
    Linux常见wenti
    informix常见问题
    Spring-boot常见问题(十二)
    浅析VO、DTO、DO、PO的概念、区别和用处(八)
    Tbase读写分离与分库分表
    函数的节流和抖动
  • 原文地址:https://www.cnblogs.com/simadongyang/p/14318797.html
Copyright © 2011-2022 走看看