日志库 uber-go/zap 的封装类
English | 简体中文
go get -u github.com/leafney/rose-zap
导入:
import (
rzap "github.com/leafney/rose-zap"
)
func main(){
cfg := rzap.NewConfig()
log := rzap.NewLogger(cfg)
defer log.Sync()
// Use Logger
log.Info("Say Hello", zap.String("name", "tom"))
// Use SugaredLogger
log.SInfof("Fetch url: %s", url)
}
cfg := rzap.NewConfig()
- 默认输出为
info
级别 - 默认仅输出到控制台窗口
- 默认行尾结束符
\n
- 默认输出为
json
格式 - 默认显示文件名和行号
- 默认输出
warning
级别以上堆栈信息
通过 SetLevel()
方法更改默认日志显示级别,默认值为 info
。
可输入的日志级别为:debug
、info
、warn
、error
、panic
、fatal
cfg := rzap.NewConfig().
SetLevel("debug")
通过 SetEnable()
方法更改是否启用、停用全局日志输出,默认为 true
。
通过 UseFmtJson()
方法来更改输出的编码器,默认为 Json
格式,可更改为 普通文本
格式
cfg := rzap.NewConfig().
UseFmtJson(false)
通过 ShowCaller()
方法来控制是否显示文件名和行号
cfg := rzap.NewConfig().
ShowCaller(false)
如果需要对 Info
、SInfow
等函数再次进行包装,可以通过 SetCallSkip()
方法跳过对封装函数的调用。默认值为 SetCallSkip(1)
cfg := rzap.NewConfig().
SetCallSkip(2).
ShowCaller(true)
通过 ShowStacktrace()
方法设置是否显示堆栈信息。默认情况下显示 warning
级别及以上的堆栈信息。
cfg := rzap.NewConfig().
ShowStacktrace(false)
内部采用第三方库 natefinch/lumberjack 实现日志切割操作,预设默认配置如下。可通过 SetFileConfig
及相关方法自定义配置。
zapcore.AddSync(&lumberjack.Logger{
Filename: "logs/rzap.log", //日志文件存放目录,如果文件夹不存在会自动创建
MaxSize: 1024, //文件大小限制,单位MB
MaxBackups: 0, //最大保留日志文件数量
MaxAge: 1, //日志文件保留天数
LocalTime: true, //日志文件分割是否采用本地时间,默认为UTC
Compress: false, //是否压缩处理
})
OutSingleFile()
方法将所有级别日志写入单个日志文件中,同时支持配置是否包含控制台输出。
默认日志文件名为 logs/rzap.log
,可通过 SetFileConfig
方法自定义配置。
cfg := rzap.NewConfig().
OutSingleFile(true)
通常情况下,为了便于运维人员排查日志,会将低于 error
级别的普通日志放到 info.log
文件中,error
及以上严重级别的日志放到 error.log
文件中。可以通过 OutMultiFile()
方法实现。
cfg := rzap.NewConfig().
OutMultiFile(true)
默认日志文件名:普通级别日志为 logs/info.log
,严重级别日志为 logs/error.log
。可通过 SetFileConfig
及相关方法自定义配置。
某些情况下,需要将低于 error
级别的普通日志直接输出到控制台显示,仅将 error
及以上严重级别的日志放到 error.log
文件中。可以通过 OutInfoConsoleErrorFile()
方法实现。
cfg := rzap.NewConfig().
OutInfoConsoleErrorFile()
默认日志文件名为 logs/error.log
,可通过 SetFileConfig
及相关方法自定义配置。
内部采用第三方库 Lumberjack
实现日志切割操作,如果默认切割配置不满足需求,可以通过 SetFileConfig
方法实现自定义配置。
支持以下配置参数:
WithFileName()
WithMaxSize()
WithMaxBackups()
WithMaxAge()
WithLocalTime()
WithCompress()
cfg := rzap.NewConfig().
OutSingleFile(true).
SetFileConfig(WithMaxBackups(2),WithLocalTime(false))
对于分级别的日志文件切割配置,除了采用 SetFileConfig()
方法进行 通用设置 外,还可以通过 SetInfoFileConfig()
或 SetErrorFileConfig()
分别单独设置。
cfg := rzap.NewConfig().
OutMultiFile(true).
SetErrorFileConfig(WithFileName("logs/xyz.log"))
SetFileConfig(WithFileName())
仅支持 OutSingleFile()
方法的日志文件名的修改,对于多级别日志输出 OutMultiFile()
和 OutInfoConsoleErrorFile()
则需要通过 SetInfoFileConfig()
或 SetErrorFileConfig()
来修改。
除了 WithFileName()
外其他的自定义配置项,按照如下优先级定义:
SetFileConfig() < SetInfoFileConfig()/SetErrorFileConfig()