日志库使用zap

lumberjack的Logger结构体说明

  • Filename 写日志的文件名称
  • MaxSize 每个日志文件长度的最大大小
  • MaxAge 日志保留的最大天数
  • MaxBackups 只保留最近多少个日志文件,用于控制程序总日志的大小
  • LocalTime 是否使用本地时间,默认使用UTC时间
  • Compress 是否压缩日志文件, 压缩方法 gzip
package main

import (
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
func initLogger(logpath string, loglevel string) *zap.Logger {
    hook := lumberjack.Logger{
        Filename:   logpath, // ⽇志⽂件路径
        MaxSize:    1024,    // megabytes
        MaxBackups: 3,       // 最多保留3个备份
        MaxAge:     7,       //days
        Compress:   true,    // 是否压缩 disabled by default
    }
    w := zapcore.AddSync(&hook)
    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
}
func main() {
    logger := initLogger("all.log", "info")
    logger.Info("test log", zap.Int("line", 47))
    logger.Warn("testlog", zap.Int("line", 47))
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容