From d24b3c46bf3be3bbf0a565c54c7bb8164b40ddf1 Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 20 Jul 2023 16:36:12 +0800 Subject: [PATCH] put logs in log file --- api/.gitignore | 2 +- api/go.mod | 1 + api/go.sum | 4 +++ api/logger/logger.go | 64 +++++++++++++++++++++++++++++++++----------- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/api/.gitignore b/api/.gitignore index d93a4fa5..80b50cf8 100644 --- a/api/.gitignore +++ b/api/.gitignore @@ -16,4 +16,4 @@ tmp bin data config.toml -static/upload +static/upload \ No newline at end of file diff --git a/api/go.mod b/api/go.mod index 05ecab65..5364e90e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -37,6 +37,7 @@ require ( golang.org/x/text v0.9.0 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/ini.v1 v1.66.2 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index e6a87d6c..151b2390 100644 --- a/api/go.sum +++ b/api/go.sum @@ -85,6 +85,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM= +github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -162,6 +164,8 @@ gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/api/logger/logger.go b/api/logger/logger.go index 0dd81e9f..ceb0586b 100644 --- a/api/logger/logger.go +++ b/api/logger/logger.go @@ -2,25 +2,59 @@ package logger import ( "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "gopkg.in/natefinch/lumberjack.v2" + "os" ) -var logger *zap.SugaredLogger +var logger *zap.Logger +var sugarLogger *zap.SugaredLogger func GetLogger() *zap.SugaredLogger { - if logger != nil { - return logger + if sugarLogger != nil { + return sugarLogger } - logLevel := zap.NewAtomicLevel() - logLevel.SetLevel(zap.InfoLevel) - log, _ := zap.Config{ - Level: logLevel, - Development: false, - Encoding: "console", - EncoderConfig: zap.NewDevelopmentEncoderConfig(), - OutputPaths: []string{"stderr"}, - ErrorOutputPaths: []string{"stderr"}, - }.Build() - logger = log.Sugar() - return logger + logLevel := zap.NewAtomicLevelAt(zapcore.InfoLevel) + encoder := getEncoder() + writerSyncer := getLogWriter() + fileCore := zapcore.NewCore(encoder, writerSyncer, logLevel) + consoleOutput := zapcore.Lock(os.Stdout) + consoleCore := zapcore.NewCore( + encoder, + consoleOutput, + logLevel, + ) + core := zapcore.NewTee(fileCore, consoleCore) + logger = zap.New(core, zap.AddCaller()) + sugarLogger = logger.Sugar() + return sugarLogger +} + +// core 三个参数之 编码 +func getEncoder() zapcore.Encoder { + encoderConfig := zapcore.EncoderConfig{ + TimeKey: "time", + LevelKey: "level", + NameKey: "logger", + CallerKey: "caller", + MessageKey: "msg", + StacktraceKey: "stacktrace", + EncodeTime: zapcore.ISO8601TimeEncoder, + EncodeDuration: zapcore.SecondsDurationEncoder, + EncodeCaller: zapcore.ShortCallerEncoder, + EncodeLevel: zapcore.CapitalLevelEncoder, + } + return zapcore.NewConsoleEncoder(encoderConfig) +} + +func getLogWriter() zapcore.WriteSyncer { + lumberJackLogger := &lumberjack.Logger{ + Filename: "logs/app.log", + MaxSize: 10, + MaxBackups: 5, + MaxAge: 30, + Compress: false, + } + return zapcore.AddSync(lumberJackLogger) }