gitee.com/woood2/luca@v1.0.4/internal/log/zap.go (about) 1 package log 2 3 import ( 4 "gitee.com/woood2/luca/internal/conf" 5 "go.uber.org/zap" 6 "log" 7 ) 8 9 func Build(env, project, entrance, instance string, consoleMode bool, options ...zap.Option) *zap.Logger { 10 var config zap.Config 11 if conf.IsPro(env) { 12 config = zap.Config{ 13 Level: zap.NewAtomicLevelAt(zap.InfoLevel), 14 Development: false, 15 Sampling: &zap.SamplingConfig{ 16 Initial: 100, 17 Thereafter: 100, 18 }, 19 } 20 } else { 21 config = zap.Config{ 22 Level: zap.NewAtomicLevelAt(zap.DebugLevel), 23 Development: true, 24 } 25 } 26 config.InitialFields = make(map[string]interface{}) 27 config.InitialFields["project"] = project 28 config.InitialFields["entrance"] = entrance 29 config.InitialFields["instance"] = instance 30 if consoleMode { 31 config.Encoding = "console" 32 config.EncoderConfig = zap.NewDevelopmentEncoderConfig() 33 config.OutputPaths = []string{"stderr"} 34 config.ErrorOutputPaths = []string{"stderr"} 35 } else { 36 config.Encoding = "json" 37 config.EncoderConfig = zap.NewProductionEncoderConfig() 38 config.OutputPaths = []string{"./zap.log"} 39 config.ErrorOutputPaths = []string{"./error.log"} 40 } 41 42 if logger, err := config.Build(options...); err != nil { 43 log.Panicln(err) 44 return nil 45 } else { 46 return logger 47 } 48 }