|
|
package log
import ( "fmt" "time"
"go.uber.org/zap" "go.uber.org/zap/zapcore" )
var log *zap.SugaredLogger
func init() { // default level: debug
Init("debug", "") }
// Init the logger with defined level. errorsPath defines the file where to store the errors, if set to "" will not store errors.
func Init(levelStr, logPath string) { var level zap.AtomicLevel err := level.UnmarshalText([]byte(levelStr)) if err != nil { panic(fmt.Errorf("Error on setting log level: %s", err)) } outputPaths := []string{"stdout"} if logPath != "" { log.Infof("log file: %s", logPath) outputPaths = append(outputPaths, logPath) }
cfg := zap.Config{ Level: level, Encoding: "console", OutputPaths: outputPaths, ErrorOutputPaths: []string{"stderr"}, EncoderConfig: zapcore.EncoderConfig{ MessageKey: "message",
LevelKey: "level", EncodeLevel: zapcore.CapitalColorLevelEncoder,
TimeKey: "timestamp", EncodeTime: func(ts time.Time, encoder zapcore.PrimitiveArrayEncoder) { encoder.AppendString(ts.Local().Format(time.RFC3339)) }, EncodeDuration: zapcore.SecondsDurationEncoder,
CallerKey: "caller", EncodeCaller: zapcore.ShortCallerEncoder,
StacktraceKey: "stacktrace", LineEnding: zapcore.DefaultLineEnding, }, }
logger, err := cfg.Build() if err != nil { panic(err) } //nolint:errcheck
defer logger.Sync() withOptions := logger.WithOptions(zap.AddCallerSkip(1)) log = withOptions.Sugar()
log.Infof("log level: %s", level) }
// Debug calls log.Debug
func Debug(args ...interface{}) { log.Debug(args...) }
// Info calls log.Info
func Info(args ...interface{}) { log.Info(args...) }
// Warn calls log.Warn
func Warn(args ...interface{}) { log.Warn(args...) }
// Error calls log.Error and stores the error message into the ErrorFile
func Error(args ...interface{}) { log.Error(args...) }
// Debugf calls log.Debugf
func Debugf(template string, args ...interface{}) { log.Debugf(template, args...) }
// Infof calls log.Infof
func Infof(template string, args ...interface{}) { log.Infof(template, args...) }
// Warnf calls log.Warnf
func Warnf(template string, args ...interface{}) { log.Warnf(template, args...) }
// Errorf calls log.Errorf and stores the error message into the ErrorFile
func Errorf(template string, args ...interface{}) { log.Errorf(template, args...) }
// Debugw calls log.Debugw
func Debugw(template string, kv ...interface{}) { log.Debugw(template, kv...) }
// Infow calls log.Infow
func Infow(template string, kv ...interface{}) { log.Infow(template, kv...) }
// Warnw calls log.Warnw
func Warnw(template string, kv ...interface{}) { log.Warnw(template, kv...) }
// Errorw calls log.Errorw and stores the error message into the ErrorFile
func Errorw(template string, kv ...interface{}) { log.Errorw(template, kv...) }
|