74 lines
1.2 KiB
Go
74 lines
1.2 KiB
Go
package log
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
const (
|
|
SERVER = "server"
|
|
SYSTEM = "system"
|
|
DATABASE = "database"
|
|
CRON = "cron"
|
|
QUEUE = "queue"
|
|
RABBIT = "rabbit"
|
|
internal = "internal"
|
|
)
|
|
|
|
var Global *LoggerManager
|
|
|
|
func SetGlobalManager(manager *LoggerManager) {
|
|
Global = manager
|
|
}
|
|
|
|
type LoggerManager struct {
|
|
loggers map[string]*logrus.Logger
|
|
mu sync.Mutex
|
|
}
|
|
|
|
func (m *LoggerManager) Get(name string) *logrus.Logger {
|
|
m.mu.Lock()
|
|
defer m.mu.Unlock()
|
|
|
|
if logger, ok := m.loggers[name]; ok {
|
|
return logger
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
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 {
|
|
manager := &LoggerManager{
|
|
loggers: make(map[string]*logrus.Logger),
|
|
}
|
|
|
|
manager.Put(internal, logrus.New())
|
|
|
|
return manager
|
|
}
|