一个简单又好用的go日志库
- API简单,可快速上手使用
- 可设置日志输出格式
- 可定义日志输出等级
- 可定义是否颜色输出
- 可实现自己的
io.writer
go get github.com/zituocn/logx
快速使用,使用默认的配置
package main
import (
"github.com/zituocn/logx"
)
func main() {
logx.Info("info")
logx.Debug("debug")
logx.Error("error")
logx.Notice("notice")
logx.Warn("warn")
logx.Panic("panic")
logx.Fatal("fatal")
}
输出
package main
import (
"time"
"github.com/zituocn/logx"
)
func main() {
logx.Infof("这是一个字串: %s", time.Now())
logx.Debugf("这是一个对象: %#v", time.Now())
}
输出
2022/11/23 21:16:49.507 [INFO] main.go:10: 这是一个字串: 2022-11-23 21:16:49.507432 +0800 CST m=+0.000194033
2022/11/23 21:16:49.507 [DEBU] main.go:11: 这是一个对象: time.Date(2022, time.November, 23, 21, 16, 49, 507724000, time.Local)
可以配置输出格式、样式等
package main
import (
"os"
"github.com/zituocn/logx"
)
func init() {
logx.SetWriter(os.Stdout).
SetColor(true).
SetFormat(logx.LogFormatJSON).
SetPrefix("demo")
}
func main() {
logx.Info("info str")
logx.Debug("debug str")
}
输出
{"prefix":"demo","time":"2022/11/23 20:25:6.166","level":"","file":"main.go:17","msg":"info str"}
{"prefix":"demo","time":"2022/11/23 20:25:6.166","level":"","file":"main.go:18","msg":"debug str"}
- logx.SetWriter -> 设置输出到哪一个io.writer
- SetColor -> 设置是否输出颜色
- SetFormat(logx.LogFormatJSON) -> 日志输出为json格式
- SetPrefix -> 设置日志前缀
package main
import (
"io"
"os"
"time"
"github.com/zituocn/logx"
)
func init() {
logx.SetWriter(io.MultiWriter(
os.Stdout,
logx.NewFileWriter(logx.FileOptions{
StorageType: logx.StorageTypeDay,
MaxDay: 7,
Dir: "./logs",
Prefix: "web",
}))).SetColor(false)
}
func main() {
logx.Infof("这是一个字串: %s", time.Now())
logx.Debugf("这是一个对象: %#v", time.Now())
}
代码说明:
logx.SetWriter
时,使用了io.MultiWriter
- 把日志输出到了
os.Stdout
和logx.FileWriter
- 设置不显示颜色
SetColor(false)
可以自己设计一个实现了 io.Writer
,由 logx.SetWriter
传入,可以是文件或网络。
package main
import (
"github.com/zituocn/logx"
"io"
"os"
"time"
)
func init() {
myWriter, err := os.OpenFile("./my_log_file.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0664)
if err != nil {
panic(err)
}
logx.SetWriter(io.MultiWriter(
os.Stdout,
myWriter,
)).SetColor(false)
}
func main() {
logx.Infof("这是一个字串: %s", time.Now())
logx.Debugf("这是一个对象: %#v", time.Now())
}