// // log.go // Copyright (C) 2022 tiglog // // Distributed under terms of the MIT license. // package logger import ( "os" "sync" "github.com/natefinch/lumberjack" "github.com/rs/zerolog" ) var once sync.Once var log_path = "./var/log/app.log" func SetLogPath(path string) { log_path = path } var log *zerolog.Logger func Get() *zerolog.Logger { once.Do(func() { fileLogger := &lumberjack.Logger{ Filename: log_path, MaxSize: 5, // MaxBackups: 10, MaxAge: 14, Compress: true, } output := zerolog.MultiLevelWriter(os.Stderr, fileLogger) l := zerolog.New(output). Level(loggerLevel). With(). Timestamp(). Stack(). Logger() log = &l }) return log } func Debug(msg string) { Get().Debug().Msg(msg) } func Debugf(format string, v ...interface{}) { Get().Debug().Msgf(format, v...) } func Info(msg string) { Get().Info().Msg(msg) } func Infof(format string, v ...interface{}) { Get().Info().Msgf(format, v...) } func Warn(msg string) { Get().Warn().Msg(msg) } func Warnf(format string, v ...interface{}) { Get().Warn().Msgf(format, v...) } func Error(msg string) { Get().Error().Msg(msg) } func Errorf(format string, v ...interface{}) { Get().Error().Msgf(format, v...) }