K3log Save

三大王日志,一款开箱即用且高效,快捷,安全的golang日志,基于uber zap

Project README

k3log

一款开箱即用且高效,快捷,安全的golang日志,基于uber zap
实现日志切割,日志过期时间,动态改变日志的打印级别

导航

  1. 介绍
  2. 日志级别
  3. 设置参数
  4. 使用方法
  5. 动态改变日志的打印级别
  6. 效率
  7. Dump的使用

介绍

取名Three King Log

  • 由uber zap 日志扩展而来
  • 实现分隔,异步,动态级别打印,json/txt
  • 以key-value形式打印日志,适合项目里使用
  • 加入Dump打印数据详细类型结构,融入go-spew调度利器

文档参考

安装

go get -u github.com/ThreeKing2018/k3log

日志级别

  • Debug 调度使用, 程序继续运行
  • Info 提示使用, 程序继续运行
  • Warn 警告使用, 程序继续运行
  • Error 错误使用, 程序继续运行
  • Panic 恐慌的,退出函数,不会退出应用唾弃,会执行defer
  • Fatal 致命的,退出应用程序,不会执行defer,因为底层多一个os.Exit
  • Dump 打印数据类型,方便调度,级别为:Debug

TOP

设置参数

  • WithFilename 日志保存路径
  • WithLogLevel 日志记录级别
  • WithMaxSize 日志分割的尺寸 MB
  • WithMaxAge 分割日志保存的时间 day
  • WithStacktrace 记录堆栈的级别
  • WithIsStdOut 是否标准输出console输出
  • WithProjectName 项目名称
  • WithLogType 日志类型,普通 或 json

TOP

使用方法

  • 简单使用
Debug("debug日志", 1)
Info("info日志", 2)
Warn("warn日志", 3)
Error("error日志", 4)
Panic("panic", 5)
Fatal("fatal", 6)
Dump("dump", 7)

TOP

  • 开发使用
NewDevelopment("dev", "log.txt")
defer Sync()
Info("Info", "dev")
  • 开发使用2
SetLogger(conf.WithIsStdOut(true),
		conf.WithLogType(conf.LogJsontype))
	Debug("self test", 100)
  • 开发使用3
SetLogger(conf.WithLogType(conf.LogJsontype), //打印json格式
    conf.WithProjectName("Zelog日志"),          //设置项目名称
    conf.WithFilename("log.txt"),             //设置输出文件名,或输出的路径
Debug("debug日志", 1)
Info("info日志", 2)
Warn("warn日志", 3)
Error("error日志", 4)
Panic("panic", 5)
Fatal("fatal", 6)

TOP

  • 生产使用
NewProducttion("pro", "log.txt")
defer Sync()
Error("pro", "ok")

  • 生产使用2
SetLogger(conf.WithLogType(conf.LogJsontype), //打印json格式
		conf.WithProjectName("Zelog日志"),          //设置项目名称
		conf.WithFilename("log.txt"),             //设置输出文件名,或输出的路径
		conf.WithLogLevel(conf.InfoLevel),        //设置日志级别,默认debug
		conf.WithMaxAge(30),                      //日志保存天数,默认30天
		conf.WithMaxSize(512),                    //多少M进行分隔日志,默认100M
		conf.WithIsStdOut(false)) //是否同时输出控制台
defer Sync()
Debug("debug日志", 1)
Info("info日志", 2)
Warn("warn日志", 3)
Error("error日志", 4)
Panic("panic", 5)
Fatal("fatal", 6)

TOP

动态改变日志的打印级别

Info("aa", 11)
SetLogLevel(conf.InfoLevel)
Info("info", 100)
Warn("warn", 200)
SetLogLevel(conf.ErrorLevel)
Info("info-100", 300) //这个无法输出,因为上面设置日志级别为:error
Error("err", 400)

效率

runtime.GOMAXPROCS(runtime.NumCPU())
BenchmarkInfo-4   	  100000	     10776 ns/op
BenchmarkInfo-4   	  200000	     12442 ns/op

TOP

Dump的使用

  • 级别为:debug
type s struct {
    Name string
    Age int
}
SetLogger(conf.WithIsStdOut(true))
Dump("name", "dump", "s", s{Name:"k3", Age: 2})

//{"name": "(string) (len=4) \"dump\"", "s": "(k3log.s) { Name: (string) (len=2) \"k3\", Age: (int) 2}"}
Open Source Agenda is not affiliated with "K3log" Project. README Source: ThreeKing2018/k3log
Stars
32
Open Issues
0
Last Commit
4 years ago
Repository
License

Open Source Agenda Badge

Open Source Agenda Rating