diff --git a/modules/log/manager.go b/modules/log/manager.go index 0414956..66e8ed2 100644 --- a/modules/log/manager.go +++ b/modules/log/manager.go @@ -11,6 +11,9 @@ const ( SYSTEM = "system" DATABASE = "database" CRON = "cron" + QUEUE = "queue" + RABBIT = "rabbit" + internal = "internal" ) var Global *LoggerManager @@ -25,6 +28,9 @@ type LoggerManager struct { } func (m *LoggerManager) Get(name string) *logrus.Logger { + m.mu.Lock() + defer m.mu.Unlock() + if logger, ok := m.loggers[name]; ok { return logger } @@ -36,13 +42,32 @@ func (m *LoggerManager) Put(name string, logger *logrus.Logger) { m.mu.Lock() defer m.mu.Unlock() + if _, ok := m.loggers[name]; ok { + m.Get(internal).Errorf("Logger with name '%s' already exists. Use PutForce to replace it.", name) + + return + } + + logger.Formatter = NewTextFormatter(name) + + m.loggers[name] = logger +} + +func (m *LoggerManager) PutForce(name string, logger *logrus.Logger) { + m.mu.Lock() + defer m.mu.Unlock() + logger.Formatter = NewTextFormatter(name) m.loggers[name] = logger } func NewManager() *LoggerManager { - return &LoggerManager{ + manager := &LoggerManager{ loggers: make(map[string]*logrus.Logger), } + + manager.Put(internal, logrus.New()) + + return manager }