add new file

This commit is contained in:
he liu
2022-01-23 17:30:38 +08:00
parent 05b2e55f39
commit c482967f8c
125 changed files with 9688 additions and 0 deletions

93
lib/logger/logger.go Normal file
View File

@@ -0,0 +1,93 @@
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()
}

View File

@@ -0,0 +1,38 @@
// +build !windows
package logger
import (
"fmt"
"go.uber.org/zap/zapcore"
"os"
"os/signal"
"syscall"
)
func logLevelSignal() {
c := make(chan os.Signal)
signal.Notify(c, syscall.SIGUSR1, syscall.SIGUSR2)
fmt.Println("notify receive signal")
go func() {
for s := range c {
fmt.Println("receive signal ", s.String())
switch s {
case syscall.SIGUSR1:
cur := atomicLevel.Level()
if (cur - 1) >= zapcore.DebugLevel {
atomicLevel.SetLevel(zapcore.Level(cur - 1))
}
case syscall.SIGUSR2:
cur := atomicLevel.Level()
if (cur + 1) <= zapcore.FatalLevel {
atomicLevel.SetLevel(zapcore.Level(cur + 1))
}
default:
}
fmt.Println("debug level change to ", atomicLevel.String())
}
}()
}

View File

@@ -0,0 +1,7 @@
// +build windows
package logger
func logLevelSignal() {
}