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 int, adapter string) *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) { var channellens int64 s, ok := loggers.LoadOrStore(label, new(Logger)) l = s.(*Logger) if len(channelLens) > 0 { channellens = channelLens[0] } if !ok { l.Lable = label l.BeeLogger = logs.NewLogger(channellens) l.SetPrefix(fmt.Sprintf("[env:%s logger:%s]", os.Getenv(envkey), label)) } return } func Get(label string, channelLens ...int64) (l *Logger) { var filelevel int = LevelWarning if os.Getenv(envkey) == "dev" { filelevel = LevelAll } l = New(label, channelLens...).SetAdapter(filelevel, AdapterFile).SetAdapter(LevelAll, AdapterConsole) return }