2024-12-30 15:09:02 +08:00
|
|
|
package uzone
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"sync"
|
|
|
|
|
|
|
|
"github.com/google/uuid"
|
|
|
|
"github.com/loveuer/uzone/pkg/api"
|
|
|
|
"github.com/loveuer/uzone/pkg/log"
|
2025-03-10 22:41:10 +08:00
|
|
|
"go.uber.org/zap"
|
2024-12-30 15:09:02 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
type uzone_logger struct {
|
2025-03-10 22:41:10 +08:00
|
|
|
ctx context.Context
|
|
|
|
caller string
|
|
|
|
sugar *zap.SugaredLogger
|
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) WithContext(ctx context.Context) *uzone_logger {
|
|
|
|
ul.ctx = ctx
|
|
|
|
return ul
|
|
|
|
}
|
|
|
|
|
|
|
|
// func (ul *uzone_logger) WithCaller(caller string) *uzone_logger {
|
|
|
|
// ul.caller = caller
|
|
|
|
// return ul
|
|
|
|
// }
|
|
|
|
|
|
|
|
func (ul *uzone_logger) GC() {
|
|
|
|
ul.ctx = nil
|
|
|
|
ul.caller = ""
|
|
|
|
ul.sugar = nil
|
|
|
|
log.Logger.Sync()
|
|
|
|
uzone_logger_pool.Put(ul)
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
var uzone_logger_pool = &sync.Pool{
|
|
|
|
New: func() any {
|
2025-03-10 22:41:10 +08:00
|
|
|
s := log.Logger.Sugar()
|
|
|
|
return &uzone_logger{sugar: s}
|
2024-12-30 15:09:02 +08:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2025-03-10 18:09:27 +08:00
|
|
|
func (ul *uzone_logger) traceId() string {
|
|
|
|
if ul.ctx == nil {
|
|
|
|
return uuid.Must(uuid.NewV7()).String()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
2025-03-10 18:09:27 +08:00
|
|
|
if tid, ok := ul.ctx.Value(api.TraceKey).(string); ok && tid != "" {
|
|
|
|
return tid
|
|
|
|
}
|
|
|
|
|
|
|
|
return uuid.Must(uuid.NewV7()).String()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) Debug(msg string, data ...any) {
|
2025-03-10 22:41:10 +08:00
|
|
|
ul.sugar.With("trace", ul.traceId()).Debugf(msg, data...)
|
|
|
|
ul.GC()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) Info(msg string, data ...any) {
|
2025-03-10 22:41:10 +08:00
|
|
|
ul.sugar.With("trace", ul.traceId()).Infof(msg, data...)
|
|
|
|
ul.GC()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) Warn(msg string, data ...any) {
|
2025-03-10 22:41:10 +08:00
|
|
|
ul.sugar.With("trace", ul.traceId()).Warnf(msg, data...)
|
|
|
|
ul.GC()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) Error(msg string, data ...any) {
|
2025-03-10 22:41:10 +08:00
|
|
|
ul.sugar.With("trace", ul.traceId()).Errorf(msg, data...)
|
|
|
|
ul.GC()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) Panic(msg string, data ...any) {
|
2025-03-10 22:41:10 +08:00
|
|
|
ul.sugar.With("trace", ul.traceId()).Panicf(msg, data...)
|
|
|
|
ul.GC()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ul *uzone_logger) Fatal(msg string, data ...any) {
|
2025-03-10 22:41:10 +08:00
|
|
|
ul.sugar.With("trace", ul.traceId()).Fatalf(msg, data...)
|
|
|
|
ul.GC()
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|