mirror of
				https://github.com/yangjian102621/geekai.git
				synced 2025-11-04 08:13:43 +08:00 
			
		
		
		
	put logs in log file
This commit is contained in:
		@@ -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
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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=
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user