mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-03 13:10:42 +00:00
94 lines
2.1 KiB
Go
94 lines
2.1 KiB
Go
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()
|
|
|
|
}
|