github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/logger/instance.go (about) 1 package logger 2 3 import ( 4 "fmt" 5 6 "go.uber.org/zap" 7 ) 8 9 // EnvType for environment type 10 type EnvType int 11 12 const ( 13 // Prod for production environment (default) 14 Prod EnvType = iota 15 // Dev for develop environment 16 Dev 17 ) 18 19 // Env for chosen environment 20 var Env EnvType 21 22 var ( 23 logger *zap.Logger 24 ) 25 26 // SetInstance for set logger instance 27 func SetInstance(zl *zap.Logger) { 28 logger = zl 29 } 30 31 // Instance for chosen logger 32 // you can change the actual instance by either: 33 // 1. change Env 34 // 2. call SetInstance 35 func Instance() *zap.Logger { 36 if logger != nil { 37 return logger 38 } 39 switch Env { 40 case Prod: 41 return ProdInstance() 42 case Dev: 43 return DevInstance() 44 default: 45 panic(fmt.Sprintf("unknown EnvType:%v", Env)) 46 } 47 }