mirror of
https://github.com/Monibuca/plugin-gb28181.git
synced 2025-12-24 13:27:57 +08:00
159 lines
3.2 KiB
Go
Executable File
159 lines
3.2 KiB
Go
Executable File
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/ghettovoice/gosip/log"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
type ZapLogger struct {
|
|
log *zap.Logger
|
|
prefix string
|
|
fields log.Fields
|
|
sugared *zap.SugaredLogger
|
|
level log.Level
|
|
}
|
|
|
|
func NewZapLogger(log *zap.Logger, prefix string, fields log.Fields) (z *ZapLogger) {
|
|
z = &ZapLogger{
|
|
log: log,
|
|
prefix: prefix,
|
|
fields: fields,
|
|
}
|
|
z.sugared = z.prepareEntry()
|
|
return
|
|
}
|
|
|
|
func (l *ZapLogger) Print(args ...interface{}) {
|
|
if l.level >= log.InfoLevel {
|
|
l.sugared.Info(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Printf(format string, args ...interface{}) {
|
|
if l.level >= log.InfoLevel {
|
|
l.sugared.Infof(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Trace(args ...interface{}) {
|
|
if l.level >= log.TraceLevel {
|
|
l.sugared.Debug(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Tracef(format string, args ...interface{}) {
|
|
if l.level >= log.TraceLevel {
|
|
l.sugared.Debugf(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Debug(args ...interface{}) {
|
|
if l.level >= log.DebugLevel {
|
|
l.sugared.Debug(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Debugf(format string, args ...interface{}) {
|
|
if l.level >= log.DebugLevel {
|
|
l.sugared.Debugf(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Info(args ...interface{}) {
|
|
if l.level >= log.InfoLevel {
|
|
l.sugared.Info(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Infof(format string, args ...interface{}) {
|
|
if l.level >= log.InfoLevel {
|
|
l.sugared.Infof(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Warn(args ...interface{}) {
|
|
if l.level >= log.WarnLevel {
|
|
l.sugared.Warn(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Warnf(format string, args ...interface{}) {
|
|
if l.level >= log.WarnLevel {
|
|
l.sugared.Warnf(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Error(args ...interface{}) {
|
|
if l.level >= log.ErrorLevel {
|
|
l.sugared.Error(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Errorf(format string, args ...interface{}) {
|
|
if l.level >= log.ErrorLevel {
|
|
l.sugared.Errorf(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Fatal(args ...interface{}) {
|
|
if l.level >= log.FatalLevel {
|
|
l.sugared.Fatal(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Fatalf(format string, args ...interface{}) {
|
|
if l.level >= log.FatalLevel {
|
|
l.sugared.Fatalf(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Panic(args ...interface{}) {
|
|
if l.level >= log.PanicLevel {
|
|
l.sugared.Panic(args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) Panicf(format string, args ...interface{}) {
|
|
if l.level >= log.PanicLevel {
|
|
l.sugared.Panicf(format, args...)
|
|
}
|
|
}
|
|
|
|
func (l *ZapLogger) WithPrefix(prefix string) log.Logger {
|
|
return NewZapLogger(l.log, prefix, l.Fields())
|
|
}
|
|
|
|
func (l *ZapLogger) Prefix() string {
|
|
return l.prefix
|
|
}
|
|
|
|
func (l *ZapLogger) WithFields(fields log.Fields) log.Logger {
|
|
return NewZapLogger(l.log, l.Prefix(), l.Fields().WithFields(fields))
|
|
}
|
|
|
|
func (l *ZapLogger) Fields() log.Fields {
|
|
return l.fields
|
|
}
|
|
|
|
func (l *ZapLogger) prepareEntry() *zap.SugaredLogger {
|
|
newlog := l.log.With(zap.String("prefix", l.Prefix()))
|
|
if l.fields != nil {
|
|
fields := make([]zapcore.Field, len(l.fields))
|
|
idx := 0
|
|
for k, v := range l.fields {
|
|
s, _ := json.Marshal(v)
|
|
fields[idx] = zap.String(k, string(s))
|
|
idx++
|
|
}
|
|
newlog = newlog.With(fields...)
|
|
}
|
|
return newlog.Sugar()
|
|
}
|
|
|
|
func (l *ZapLogger) SetLevel(level log.Level) {
|
|
l.level = level
|
|
}
|