一个简单又好用的go日志库
特性
io.writer
安装
go get github.com/zituocn/logx
1、在控制台打印日志
1.1 快速上手
快速使用,使用默认的配置
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")
}
输出

printfpackage 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)
1.3 自定义配置
可以配置输出格式、样式等
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 -> 设置日志前缀
2. 同时写日志到文件
logxFileWriterpackage 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.SetWriterio.MultiWriteros.Stdoutlogx.FileWriterSetColor(false)
2.2 自己设计一个io.Writer
io.Writerlogx.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())
}