go 日志框架
内置log
import (
"log"
"os"
)
func main() {
// 设置log
log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)
// 自定义日志前缀
log.SetPrefix("[pprof]")
log.Println("main ..")
// 如果用format就用PrintF,而不是Print打印,out: 2025/02/13 11:32:45 普通日志日志
log.Printf("普通日志%s\n", "日志")
/**
2025/02/13 11:32:45 普通日志%s
日志
*/
log.Print("普通日志%s\n", "日志")
// 自定义
logger := log.New(os.Stdout, "<New>", log.Lshortfile|log.Ldate|log.Ltime)
logger.Println("这是自定义的logger记录的日志。")
// 严重错误
log.Fatalln("严重错误")
// Panic系列函数会在写入日志信息后panic
// 在 Go 语言中,panic 是一种用于处理程序异常情况的机制。
//当程序遇到无法继续执行的严重错误时,可以通过 panic 触发一个运行时错误,
//导致程序立即停止当前函数的执行,并开始执行延迟函数(defer),最后退出程序。
log.Panic("使人惶恐的")
}
zap
github:https://github.com/uber-go/zap
import (
"go.uber.org/zap"
)
/*
*
{"level":"info","ts":1739418401.0806556,"caller":"src/test1.go:11","msg":"This i
s an info log","key":"value","count":1}
{"level":"warn","ts":1739418401.0812044,"caller":"src/test1.go:15","msg":"This i
s an info log","key":"value","count":1}
{"level":"error","ts":1739418401.0812044,"caller":"src/test1.go:19","msg":"This
is an info log","key":"value","count":1,"stacktrace":"main.main\n\t***src/test1.go:19\nruntime.main\n\tC:/Program Files/Go/src/runtime/proc.g
o:267"}
*/
func main() {
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("This is an info log",
zap.String("key", "value"),
zap.Int("count", 1),
)
logger.Warn("This is an info log",
zap.String("key", "value"),
zap.Int("count", 1),
)
logger.Error("This is an info log",
zap.String("key", "value"),
zap.Int("count", 1),
)
}