123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package logger
- import (
- "os"
- "path/filepath"
- "time"
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- "gopkg.in/natefinch/lumberjack.v2"
- )
- var log *zap.Logger
- var atomicLevel zap.AtomicLevel
- func Debug(msg string, fields ...zap.Field) {
- log.Debug(msg, fields...)
- }
- func Info(msg string, fields ...zap.Field) {
- log.Info(msg, fields...)
- }
- func Warn(msg string, fields ...zap.Field) {
- log.Warn(msg, fields...)
- }
- func Error(msg string, fields ...zap.Field) {
- log.Error(msg, fields...)
- }
- func DPanic(msg string, fields ...zap.Field) {
- log.DPanic(msg, fields...)
- }
- func Panic(msg string, fields ...zap.Field) {
- log.Panic(msg, fields...)
- }
- func Fatal(msg string, fields ...zap.Field) {
- log.Fatal(msg, fields...)
- }
- func Sync() {
- log.Sync()
- }
- func SetLogLevel(level int) {
- atomicLevel.SetLevel(zapcore.Level(level))
- }
- func init() {
- hook := lumberjack.Logger{
- Filename: filepath.Join(os.TempDir(), "nps.log"),
- MaxSize: 128,
- MaxBackups: 30,
- MaxAge: 7,
- Compress: true,
- }
- encoderConfig := zap.NewDevelopmentEncoderConfig()
- encoderConfig.TimeKey = "log_time"
- encoderConfig.LevelKey = "level"
- encoderConfig.NameKey = "logger"
- encoderConfig.CallerKey = "caller"
- encoderConfig.MessageKey = "msg"
- encoderConfig.StacktraceKey = "StacktraceKey"
- encoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
- enc.AppendString(t.Format("2006-01-02 15:04:05"))
- }
- consoleConfig := encoderConfig
- consoleConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
- atomicLevel = zap.NewAtomicLevel()
- // init info level
- atomicLevel.SetLevel(zapcore.Level(-1))
- core := zapcore.NewTee(
- zapcore.NewCore(zapcore.NewJSONEncoder(encoderConfig), zapcore.NewMultiWriteSyncer(zapcore.AddSync(&hook)), atomicLevel),
- zapcore.NewCore(zapcore.NewConsoleEncoder(consoleConfig), zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout)), atomicLevel),
- )
- caller := zap.AddCaller()
- development := zap.Development()
- log = zap.New(core, caller, development, zap.AddCallerSkip(1), zap.AddStacktrace(zap.ErrorLevel))
- defer log.Sync()
- undo := zap.ReplaceGlobals(log)
- defer undo()
- logLevelSignal()
- }
|