init: first steps

This commit is contained in:
2025-07-20 23:50:47 +03:00
commit 5f26ad6941
25 changed files with 1134 additions and 0 deletions

28
modules/log/formatter.go Normal file
View File

@@ -0,0 +1,28 @@
package log
import (
"fmt"
"github.com/sirupsen/logrus"
)
type TextFormatter struct {
logrusFormatter logrus.TextFormatter
prefix []byte
}
func NewTextFormatter(prefix string) *TextFormatter {
return &TextFormatter{
logrusFormatter: logrus.TextFormatter{},
prefix: []byte(fmt.Sprintf("[%s] ", prefix)),
}
}
func (t *TextFormatter) Format(item *logrus.Entry) ([]byte, error) {
original, err := t.logrusFormatter.Format(item)
if err != nil {
return nil, err
}
return append(t.prefix, original...), nil
}

47
modules/log/manager.go Normal file
View File

@@ -0,0 +1,47 @@
package log
import (
"sync"
"github.com/sirupsen/logrus"
)
const (
SERVER = "server"
SYSTEM = "system"
DATABASE = "database"
)
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 {
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()
logger.Formatter = NewTextFormatter(name)
m.loggers[name] = logger
}
func NewManager() *LoggerManager {
return &LoggerManager{
loggers: make(map[string]*logrus.Logger),
}
}