# README
logger
一个在zap基础上封装的日志库,增加了易用性及功能性
Features
- 参数化配置日志
- 同时输出多种日志后台:终端日志、文件日志、网络日志
- 高级别日志独立输出
- 重定向panic日志
- 同步异步可配置
- 日志输出格式可选:json、console
- 时区可选:UTC、Local
- 堆栈信息输出
- 日志分割
- 日志压缩
- 日志清理
Logger Levels
- Debug
- Info
- Warn
- Error
- Panic
- Fatal
Options
package logger
// Options 日志配置
type Options struct {
Filename string // 日志文件路径
Level zapcore.Level // 日志级别
Stacktrace zapcore.Level // 记录堆栈的日志级别
MaxFileSize int // 日志分割的尺寸
MaxAge int // 日志保存的时间 单位:天
MaxBackups int // 最大日志数量
FormatType string // 日志格式
CallerSkip int // 堆栈的跳过层数
IsAsync bool // 异步日志
IsCompress bool // 是否压缩
IsOpenPprof bool // 是否打开pprof
IsOpenConsole bool // 是否打开终端标准输出
IsOpenFile bool // 是否打开文件日志
IsOpenErrorFile bool // 是否打开高级别错误文件日志
IsRedirectErr bool // 是否重定向标准错误输出
}
Default
package logger
// DefaultOptions 默认的日志配置
var DefaultOptions = Options{
Filename: "./log/default.log",
Level: zap.DebugLevel,
MaxFileSize: 128,
MaxAge: 60,
MaxBackups: 1024,
Stacktrace: zap.ErrorLevel,
FormatType: LogFormatConsole,
CallerSkip: 1,
IsAsync: false,
IsCompress: true,
IsOpenPprof: false,
IsOpenConsole: true,
IsOpenFile: false,
IsOpenErrorFile: false,
IsRedirectErr: true,
}
API
初始化与关闭:
- Init 使用选项函数初始化日志服务
- Close 关闭日志服务
选项配置:
- SetFilename:设置日志文件路径
- SetLevel:设置日志级别
- SetStacktrace:设置记录堆栈的日志级别
- SetMaxFileSize:设置日志分割的尺寸
- SetMaxAge:设置日志保存的时间 单位:天
- SetMaxBackups:设置最大日志数量
- SetFormatType:设置日志格式
- SetCallerSkip:设置堆栈的跳过层数
- SetIsAsync:设置异步日志
- SetIsCompress:设置是否压缩
- SetIsOpenPprof:设置是否打开pprof
- SetIsOpenConsole:设置是否打开终端标准输出
- SetIsOpenFile:设置是否打开文件日志
- SetIsOpenErrorFile:设置是否打开高级别错误文件日志
- SetIsRedirectErr:设置是否重定向标准错误输出
记录日志:
- Debug:打印Debug级别日志,自动参数
- Debugf:打印Debug级别日志,格式化参数
- Debugw:打印Debug级别日志,KV参数
- Info:打印Info级别日志,自动参数
- Infof:打印Info级别日志,格式化参数
- Infow:打印Info级别日志,KV参数
- Warn:打印Warn级别日志,自动参数
- Warnf:打印Warn级别日志,格式化参数
- Warnw:打印Warn级别日志,KV参数
- Error:打印Error级别日志,自动参数
- Errorf:打印Error级别日志,格式化参数
- Errorw:打印Error级别日志,KV参数
- Panic:打印Panic级别日志,自动参数
- Panicf:打印Panic级别日志,格式化参数
- Panicw:打印Panic级别日志,KV参数
- Fatal:打印Fatal级别日志,自动参数
- Fatalf:打印Fatal级别日志,格式化参数
- Fatalw:打印Fatal级别日志,KV参数
Example
JSON format
package main
import (
"github.com/caibo86/logger"
)
func main() {
logger.Init(
logger.SetLevel(logger.DebugLevel),
logger.SetCallerSkip(2),
logger.SetFilename("test.log"),
logger.SetIsRedirectErr(false),
logger.SetIsOpenFile(true),
logger.SetFormatType(logger.LogFormatJson),
logger.SetStacktrace(logger.ErrorLevel),
)
defer func() {
_ = logger.Close()
}()
logger.Debug("hello", "world", 2024)
logger.Debugf("hello world %v", 2004)
logger.Debugw("hello world", "foo", "bar")
logger.Error("we have an error")
logger.Fatal("hello", "world", 2024)
}
Output:
{"level":"info","ts":"2024-11-20 07:29:16.268","caller":"example/main.go:15","msg":"successfully initialized logger service"}
{"level":"debug","ts":"2024-11-20 07:29:16.268","caller":"runtime/proc.go:267","msg":"helloworld2024"}
{"level":"debug","ts":"2024-11-20 07:29:16.268","caller":"runtime/proc.go:267","msg":"hello world 2004"}
{"level":"debug","ts":"2024-11-20 07:29:16.268","caller":"runtime/proc.go:267","msg":"hello world","foo":"bar"}
{"level":"error","ts":"2024-11-20 07:29:16.268","caller":"runtime/proc.go:267","msg":"we have an error","stacktrace":"runtime.main\n\t/usr/local/go/src/runtime/proc.go:267"}
{"level":"fatal","ts":"2024-11-20 07:29:16.268","caller":"runtime/proc.go:267","msg":"helloworld2024","stacktrace":"runtime.main\n\t/usr/local/go/src/runtime/proc.go:267"}
exit status 1
Console format
package main
import (
"github.com/caibo86/logger"
)
func main() {
logger.Init(
logger.SetLevel(logger.DebugLevel),
logger.SetCallerSkip(2),
logger.SetFilename("test.log"),
logger.SetIsRedirectErr(false),
logger.SetIsOpenFile(true),
// logger.SetFormatType(logger.LogFormatJson),
logger.SetStacktrace(logger.ErrorLevel),
)
defer func() {
_ = logger.Close()
}()
logger.Debug("hello", "world", 2024)
logger.Debugf("hello world %v", 2004)
logger.Debugw("hello world", "foo", "bar")
logger.Error("we have an error")
logger.Fatal("hello", "world", 2024)
}
Output:
2024-11-20 07:31:56.089 test INFO example/main.go:15 successfully initialized logger service
2024-11-20 07:31:56.089 test DEBUG runtime/proc.go:267 helloworld2024
2024-11-20 07:31:56.089 test DEBUG runtime/proc.go:267 hello world 2004
2024-11-20 07:31:56.089 test DEBUG runtime/proc.go:267 hello world {"foo": "bar"}
2024-11-20 07:31:56.090 test ERROR runtime/proc.go:267 we have an error
runtime.main
/usr/local/go/src/runtime/proc.go:267
2024-11-20 07:31:56.090 test FATAL runtime/proc.go:267 helloworld2024
runtime.main
/usr/local/go/src/runtime/proc.go:267
exit status 1
Note
# Packages
No description provided by the author
# Functions
Close 关闭日志服务时调用.
Debug 打印Debug级别日志,自动参数.
Debugf 打印Debug级别日志,格式化参数.
Debugw 打印Debug级别日志,键值对参数.
Error 打印Error级别日志,自动参数.
Errorf 打印Error级别日志,格式化参数.
Errorw 打印Error级别日志,键值对参数.
Fatal 打印Fatal级别日志,自动参数.
Fatalf 打印Fatal级别日志,格式化参数.
Fatalw 打印Fatal级别日志,键值对参数.
Info 打印Info级别日志,自动参数.
Infof 打印Info级别日志,格式化参数.
Infow 打印Info级别日志,键值对参数.
Init 全局日志初始化 每个app必须调用一次.
Panic 打印Panic级别日志,自动参数.
Panicf 打印Panic级别日志,格式化参数.
Panicw 打印Panic级别日志,键值对参数.
SetCallerSkip 设置堆栈的跳过层数.
SetFilename 设置日志文件路径.
SetFormatType 设置日志格式.
SetIsAsync 设置是否异步日志.
SetIsCompress 设置是否压缩.
SetIsOpenConsole 设置是否打开终端标准输出.
SetIsOpenErrorFile 设置是否打开高级别错误文件日志.
SetIsOpenFile 设置是否打开文件日志.
SetIsOpenPprof 设置是否打开pprof.
SetIsRedirectErr 设置是否重定向标准错误输出.
SetLevel 设置日志级别.
SetMaxAge 设置日志保存的时间.
SetMaxBackups 设置最大日志数量.
SetMaxFileSize 设置日志分割的尺寸.
SetStacktrace 设置记录堆栈的日志级别.
Warn 打印Warn级别日志,自动参数.
Warnf 打印Warn级别日志,格式化参数.
Warnw 打印Warn级别日志,键值对参数.
# Constants
异步日志队列大小.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
控制台日志格式.
json日志格式.
No description provided by the author
No description provided by the author
# Variables
DefaultOptions 默认的日志配置.
# Type aliases
Option 日志配置项.