129 lines
3.1 KiB
Go
129 lines
3.1 KiB
Go
package log
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
"videoweb/pub/common/log/zapcorex"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
var (
|
|
zapLogger *zap.Logger
|
|
zapLoggerS *zap.SugaredLogger
|
|
ZapLog *zap.Logger
|
|
ZapLogS *zap.SugaredLogger
|
|
Debug = zapLogger.Debug
|
|
Info = zapLogger.Info
|
|
Warn = zapLogger.Warn
|
|
Error = zapLogger.Error
|
|
Panic = zapLogger.Panic
|
|
Fatal = zapLogger.Fatal
|
|
Debugf = zapLoggerS.Debugf
|
|
Infof = zapLoggerS.Infof
|
|
Warnf = zapLoggerS.Warnf
|
|
Errorf = zapLoggerS.Errorf
|
|
Fatalf = zapLoggerS.Fatalf
|
|
Debugw = zapLoggerS.Debugw
|
|
Infow = zapLoggerS.Infow
|
|
Warnw = zapLoggerS.Warnw
|
|
Errorw = zapLoggerS.Errorw
|
|
Fatalw = zapLoggerS.Fatalw
|
|
)
|
|
|
|
func newEncoderConfig() zapcore.EncoderConfig {
|
|
return zapcore.EncoderConfig{
|
|
// Keys can be anything except the empty string.
|
|
TimeKey: "T",
|
|
LevelKey: "L",
|
|
NameKey: "N",
|
|
CallerKey: "C",
|
|
MessageKey: "M",
|
|
StacktraceKey: "S",
|
|
FunctionKey: "F",
|
|
LineEnding: zapcore.DefaultLineEnding,
|
|
EncodeLevel: zapcore.CapitalColorLevelEncoder,
|
|
EncodeTime: timeEncoder,
|
|
EncodeDuration: zapcore.StringDurationEncoder,
|
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
|
ConsoleSeparator: " ",
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
core := zapcore.NewCore(
|
|
zapcorex.NewConsoleEncoder(newEncoderConfig()),
|
|
zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout)),
|
|
zap.DebugLevel,
|
|
)
|
|
zapLogger = zap.New(core, zap.AddCaller())
|
|
zapLoggerS = zapLogger.Sugar()
|
|
ZapLog = zapLogger
|
|
ZapLogS = zapLoggerS
|
|
Debug = zapLogger.Debug
|
|
Info = zapLogger.Info
|
|
Warn = zapLogger.Warn
|
|
Error = zapLogger.Error
|
|
Panic = zapLogger.Panic
|
|
Fatal = zapLogger.Fatal
|
|
Debugf = zapLoggerS.Debugf
|
|
Infof = zapLoggerS.Infof
|
|
Warnf = zapLoggerS.Warnf
|
|
Errorf = zapLoggerS.Errorf
|
|
Fatalf = zapLoggerS.Fatalf
|
|
Debugw = zapLoggerS.Debugw
|
|
Infow = zapLoggerS.Infow
|
|
Warnw = zapLoggerS.Warnw
|
|
Errorw = zapLoggerS.Errorw
|
|
Fatalw = zapLoggerS.Fatalw
|
|
}
|
|
|
|
func timeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
|
enc.AppendString(t.In(time.Local).Format("2006-01-02 15:04:05"))
|
|
}
|
|
|
|
type Field = zap.Field
|
|
|
|
func Any(key string, value interface{}) Field {
|
|
return zap.Any(key, value)
|
|
}
|
|
|
|
func E(err error) Field {
|
|
return Any("err", err)
|
|
}
|
|
|
|
type contextKey int64
|
|
|
|
var (
|
|
loggerContextKey contextKey
|
|
)
|
|
|
|
func ContextWithLogger(ctx context.Context, l *zap.SugaredLogger) context.Context {
|
|
return context.WithValue(ctx, loggerContextKey, l)
|
|
}
|
|
|
|
func LoggerFromContext(ctx context.Context) *zap.SugaredLogger {
|
|
v := ctx.Value(loggerContextKey)
|
|
if v == nil {
|
|
return ZapLogS
|
|
}
|
|
return v.(*zap.SugaredLogger)
|
|
}
|
|
|
|
type Logger struct{}
|
|
|
|
// Info logs routine messages about cron's operation.
|
|
func (s *Logger) Info(msg string, keysAndValues ...interface{}) {
|
|
_ = log.Default().Output(2, msg+" "+fmt.Sprint(keysAndValues...))
|
|
}
|
|
|
|
// Error logs an error condition.
|
|
func (s *Logger) Error(err error, msg string, keysAndValues ...interface{}) {
|
|
line := fmt.Sprintf("%s %v %s", msg, err, fmt.Sprint(keysAndValues...))
|
|
_ = log.Default().Output(2, line)
|
|
}
|