refactor: разделение кода на пакеты и улучшение архитектуры
- Создана новая структура проекта с разделением на пакеты - Добавлены интерфейсы для всех сервисов (Git, Quartz, Files, Build) - Реализован Dependency Injection для сервисов - Добавлены middleware для логирования, Request ID и Response Time - Создан пакет конфигурации с валидацией - Улучшено логирование через интерфейс - Добавлены обработчики HTTP в отдельных пакетах - Создана структура для тестирования - Добавлены конфигурационные файлы и документация
This commit is contained in:
130
pkg/logger/logger.go
Normal file
130
pkg/logger/logger.go
Normal file
@@ -0,0 +1,130 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// Logger интерфейс для логирования
|
||||
type Logger interface {
|
||||
Info(args ...interface{})
|
||||
Infof(format string, args ...interface{})
|
||||
Error(args ...interface{})
|
||||
Errorf(format string, args ...interface{})
|
||||
Warn(args ...interface{})
|
||||
Warnf(format string, args ...interface{})
|
||||
Debug(args ...interface{})
|
||||
Debugf(format string, args ...interface{})
|
||||
Fatalf(format string, args ...interface{})
|
||||
WithField(key string, value interface{}) Logger
|
||||
WithFields(fields map[string]interface{}) Logger
|
||||
}
|
||||
|
||||
// logrusLogger реализация логгера через logrus
|
||||
type logrusLogger struct {
|
||||
logger *logrus.Logger
|
||||
}
|
||||
|
||||
// New создает новый экземпляр логгера
|
||||
func New() Logger {
|
||||
logger := logrus.New()
|
||||
logger.SetFormatter(&logrus.TextFormatter{
|
||||
FullTimestamp: true,
|
||||
})
|
||||
logger.SetLevel(logrus.InfoLevel)
|
||||
|
||||
return &logrusLogger{logger: logger}
|
||||
}
|
||||
|
||||
// NewWithLevel создает логгер с указанным уровнем
|
||||
func NewWithLevel(level string) Logger {
|
||||
logger := logrus.New()
|
||||
logger.SetFormatter(&logrus.TextFormatter{
|
||||
FullTimestamp: true,
|
||||
})
|
||||
|
||||
switch level {
|
||||
case "debug":
|
||||
logger.SetLevel(logrus.DebugLevel)
|
||||
case "info":
|
||||
logger.SetLevel(logrus.InfoLevel)
|
||||
case "warn":
|
||||
logger.SetLevel(logrus.WarnLevel)
|
||||
case "error":
|
||||
logger.SetLevel(logrus.ErrorLevel)
|
||||
default:
|
||||
logger.SetLevel(logrus.InfoLevel)
|
||||
}
|
||||
|
||||
return &logrusLogger{logger: logger}
|
||||
}
|
||||
|
||||
// Info логирует информационное сообщение
|
||||
func (l *logrusLogger) Info(args ...interface{}) {
|
||||
l.logger.Info(args...)
|
||||
}
|
||||
|
||||
// Fatalf логирует критическую ошибку и завершает программу
|
||||
func (l *logrusLogger) Fatalf(format string, args ...interface{}) {
|
||||
l.logger.Fatalf(format, args...)
|
||||
}
|
||||
|
||||
// Infof логирует форматированное информационное сообщение
|
||||
func (l *logrusLogger) Infof(format string, args ...interface{}) {
|
||||
l.logger.Infof(format, args...)
|
||||
}
|
||||
|
||||
// Error логирует сообщение об ошибке
|
||||
func (l *logrusLogger) Error(args ...interface{}) {
|
||||
l.logger.Error(args...)
|
||||
}
|
||||
|
||||
// Errorf логирует форматированное сообщение об ошибке
|
||||
func (l *logrusLogger) Errorf(format string, args ...interface{}) {
|
||||
l.logger.Errorf(format, args...)
|
||||
}
|
||||
|
||||
// Warn логирует предупреждение
|
||||
func (l *logrusLogger) Warn(args ...interface{}) {
|
||||
l.logger.Warn(args...)
|
||||
}
|
||||
|
||||
// Warnf логирует форматированное предупреждение
|
||||
func (l *logrusLogger) Warnf(format string, args ...interface{}) {
|
||||
l.logger.Warnf(format, args...)
|
||||
}
|
||||
|
||||
// Debug логирует отладочное сообщение
|
||||
func (l *logrusLogger) Debug(args ...interface{}) {
|
||||
l.logger.Debug(args...)
|
||||
}
|
||||
|
||||
// Debugf логирует форматированное отладочное сообщение
|
||||
func (l *logrusLogger) Debugf(format string, args ...interface{}) {
|
||||
l.logger.Debugf(format, args...)
|
||||
}
|
||||
|
||||
// WithField добавляет поле к логгеру
|
||||
func (l *logrusLogger) WithField(key string, value interface{}) Logger {
|
||||
// Создаем новый логгер с полем
|
||||
newLogger := logrus.New()
|
||||
newLogger.SetFormatter(l.logger.Formatter)
|
||||
newLogger.SetLevel(l.logger.Level)
|
||||
newLogger.SetOutput(l.logger.Out)
|
||||
|
||||
// Добавляем поле к контексту
|
||||
newLogger.WithField(key, value)
|
||||
return &logrusLogger{logger: newLogger}
|
||||
}
|
||||
|
||||
// WithFields добавляет поля к логгеру
|
||||
func (l *logrusLogger) WithFields(fields map[string]interface{}) Logger {
|
||||
// Создаем новый логгер с полями
|
||||
newLogger := logrus.New()
|
||||
newLogger.SetFormatter(l.logger.Formatter)
|
||||
newLogger.SetLevel(l.logger.Level)
|
||||
newLogger.SetOutput(l.logger.Out)
|
||||
|
||||
// Добавляем поля к контексту
|
||||
newLogger.WithFields(fields)
|
||||
return &logrusLogger{logger: newLogger}
|
||||
}
|
||||
Reference in New Issue
Block a user