Files
livekit/pkg/logger/logger.go
2021-06-09 12:31:29 -07:00

83 lines
1.8 KiB
Go

package logger
import (
"github.com/go-logr/zapr"
"github.com/pion/ion-sfu/pkg/buffer"
"github.com/pion/ion-sfu/pkg/sfu"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var (
wrappedLogger *zap.SugaredLogger
// zap logger
defaultLogger *zap.Logger
)
func GetLogger() *zap.Logger {
if defaultLogger == nil {
InitDevelopment("")
}
return defaultLogger
}
// valid levels: debug, info, warn, error, fatal, panic
func initLogger(config zap.Config, level string) {
if level != "" {
lvl := zapcore.Level(0)
if err := lvl.UnmarshalText([]byte(level)); err == nil {
config.Level = zap.NewAtomicLevelAt(lvl)
}
}
// skip one level to remove this helper file
l, _ := config.Build(zap.AddCallerSkip(1))
wrappedLogger = l.Sugar()
defaultLogger, _ = config.Build()
ionLogger := zapr.NewLogger(defaultLogger)
sfu.Logger = ionLogger
buffer.Logger = ionLogger
}
func InitProduction(logLevel string) {
initLogger(zap.NewProductionConfig(), logLevel)
}
func InitDevelopment(logLevel string) {
initLogger(zap.NewDevelopmentConfig(), logLevel)
}
func Debugw(msg string, keysAndValues ...interface{}) {
if wrappedLogger == nil {
return
}
wrappedLogger.Debugw(msg, keysAndValues...)
}
func Infow(msg string, keysAndValues ...interface{}) {
if wrappedLogger == nil {
return
}
wrappedLogger.Infow(msg, keysAndValues...)
}
func Warnw(msg string, err error, keysAndValues ...interface{}) {
if wrappedLogger == nil {
return
}
if err != nil {
keysAndValues = append([]interface{}{"error", err}, keysAndValues...)
}
wrappedLogger.Warnw(msg, keysAndValues...)
}
func Errorw(msg string, err error, keysAndValues ...interface{}) {
if wrappedLogger == nil {
return
}
if err != nil {
keysAndValues = append([]interface{}{"error", err}, keysAndValues...)
}
wrappedLogger.Errorw(msg, keysAndValues...)
}