package grlogs import ( "fmt" "golib.gaore.com/GaoreGo/grlogs/logs" "os" "sync" ) var loggers = sync.Map{} var envkey = "CENTER_RUNMODE" type Logger struct { Lable string *logs.BeeLogger } func (self *Logger) SetAdapter(level Level, adapter Adapter) *Logger { if call, ok := adatperMapper[adapter]; ok { if err := call(self, level); err != nil { fmt.Println(err) } } return self } func New(label string, channelLens ...int64) (l *Logger, loaded bool) { var channellens int64 var tmp interface{} tmp, loaded = loggers.LoadOrStore(label, new(Logger)) l = tmp.(*Logger) if len(channelLens) > 0 { channellens = channelLens[0] } if !loaded { l.Lable = label l.BeeLogger = logs.NewLogger(channellens) l.BeeLogger.Lable = label l.Env = os.Getenv(envkey) l.SetPrefix(fmt.Sprintf("[env:%s logger:%s]", os.Getenv(envkey), label)) l.EnableFuncCallDepth(true) l.SetLogFuncCallDepth(2) } return } func Get(label string, channelLens ...int64) (l *Logger) { var filelevel Level = LevelInfo var loaded bool if os.Getenv(envkey) == "dev" { filelevel = LevelAll } if l, loaded = New(label, channelLens...); !loaded { l.SetAdapter(filelevel, AdapterFile).SetAdapter(LevelAll, AdapterConsole) } return } func GetEs(label string, channelLens ...int64) (l *Logger) { var filelevel Level = LevelInfo var loaded bool if os.Getenv(envkey) == "dev" { filelevel = LevelAll } if l, loaded = New(label, channelLens...); !loaded { l.SetAdapter(filelevel, AdapterFile).SetAdapter(LevelAll, AdapterConsole).SetAdapter(filelevel, AdapterElasticSearch) } return }