package gologger import ( "fmt" "time" ) const ( NoLog = iota Error Warn Info Debug Trace ) var loggerMap map[string]Logger = map[string]Logger{} type LogConfig struct { Name string Level int } type Logger struct { LogConfig } func (l *Logger) log(Level int, msg string) { now := time.Now() if Level <= l.Level { fmt.Println(now.Format("2006-01-02 15:04:05"), " ", l.Name, ": ", msg) } } func (l *Logger) Error(msg string) { l.log(Error, msg) } func (l *Logger) Warn(msg string) { l.log(Warn, msg) } func (l *Logger) Info(msg string) { l.log(Info, msg) } func (l *Logger) Debug(msg string) { l.log(Debug, msg) } func (l *Logger) Trace(msg string) { l.log(Trace, msg) } func GetLogger(logConfig LogConfig) Logger { if logger, ok := loggerMap[logConfig.Name]; ok { return logger } else { logger = Logger{logConfig} loggerMap[logConfig.Name] = logger return logger } }