logrus
Hertz 对接 logrus 和 lumberjack。
目前 hlog 支持 zap, logrus, zerolog 和 slog 的拓展使用,Hertz 提供 SetLogger 接口用于注入用户自定义的 logger 实现。
以 zerolog 为例,zerolog 中实现了这样的函数:
package main
import (
"bytes"
"github.com/cloudwego/hertz/pkg/common/json"
hertzZerolog "github.com/hertz-contrib/logger/zerolog"
)
func main() {
b := &bytes.Buffer{}
l := hertzZerolog.New(hertzZerolog.WithField("service", "logging"))
l.SetOutput(b)
l.Info("foobar")
type Log struct {
Level string `json:"level"`
Service string `json:"service"`
Message string `json:"message"`
}
log := &Log{}
err := json.Unmarshal(b.Bytes(), log)//log.service=="logging"
}
而在 zap 和 logrus 中并未直接实现这样的函数,需要手动添加原始 option
以 zap 为例:
package main
import (
"bytes"
"github.com/cloudwego/hertz/pkg/common/json"
hertzzap "github.com/hertz-contrib/logger/zap"
"go.uber.org/zap"
)
func main() {
b := &bytes.Buffer{}
l := hertzzap.NewLogger(hertzzap.WithZapOptions(zap.Fields(zap.String("service", "logging"))))
l.SetOutput(b)
l.Info("foobar")
type Log struct {
Level string `json:"level"`
Service string `json:"service"`
Message string `json:"message"`
}
log := &Log{}
err := json.Unmarshal(b.Bytes(), log) //log.service=="logging"
}
Hertz 对接 logrus 和 lumberjack。
Hertz 对接 zap 和 lumberjack。
Hertz 对接 zerolog 和 lumberjack。
Hertz 对接 slog 和 lumberjack。