modified: cmd/main.go
modified: go.mod modified: go.sum new file: internal/logger/logger.go add zapplogger initiator
This commit is contained in:
@@ -4,11 +4,22 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"api_yal/internal/config"
|
||||||
"api_yal/internal/handlers"
|
"api_yal/internal/handlers"
|
||||||
"api_yal/internal/server"
|
"api_yal/internal/server"
|
||||||
|
"api_yal/internal/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
// Загрузка конфигурации приложения из файлов окружения или конфигурационных файлов
|
||||||
|
// Конфигурация включает параметры БД, уровень логирования, порт приложения и т.д.
|
||||||
|
cfg := config.Load()
|
||||||
|
|
||||||
|
|
||||||
|
// Инициализация логгера с указанным уровнем логирования и окружением (dev/prod)
|
||||||
|
// Логгер будет настроен соответствующим образом для заданного окружения
|
||||||
|
logger.Init(cfg.LogLevel, cfg.Environment)
|
||||||
|
|
||||||
// Создаем маршрутизатор
|
// Создаем маршрутизатор
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
|
|
||||||
@@ -23,3 +34,4 @@ func main() {
|
|||||||
log.Fatalf("Server failed to start: %v", err)
|
log.Fatalf("Server failed to start: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ go 1.22.5
|
|||||||
|
|
||||||
require gorm.io/gorm v1.31.1
|
require gorm.io/gorm v1.31.1
|
||||||
|
|
||||||
|
require go.uber.org/multierr v1.10.0 // indirect
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
github.com/jinzhu/now v1.1.5 // indirect
|
github.com/jinzhu/now v1.1.5 // indirect
|
||||||
|
go.uber.org/zap v1.27.1
|
||||||
golang.org/x/text v0.20.0 // indirect
|
golang.org/x/text v0.20.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
|
|||||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||||
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||||
|
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||||
|
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||||
|
go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
|
||||||
|
go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||||
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
|
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
|
||||||
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
|
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
|
||||||
gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg=
|
gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg=
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
// pkg/logger/logger.go
|
||||||
|
package logger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"go.uber.org/zap/zapcore"
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
var globalLogger *zap.Logger
|
||||||
|
|
||||||
|
// Init инициализирует глобальный логгер
|
||||||
|
func Init(level string, environment string) error {
|
||||||
|
var config zap.Config
|
||||||
|
|
||||||
|
if environment == "production" {
|
||||||
|
config = zap.NewProductionConfig()
|
||||||
|
} else {
|
||||||
|
config = zap.NewDevelopmentConfig()
|
||||||
|
config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
||||||
|
}
|
||||||
|
|
||||||
|
// Устанавливаем уровень логирования
|
||||||
|
switch level {
|
||||||
|
case "debug":
|
||||||
|
config.Level = zap.NewAtomicLevelAt(zap.DebugLevel)
|
||||||
|
case "info":
|
||||||
|
config.Level = zap.NewAtomicLevelAt(zap.InfoLevel)
|
||||||
|
case "warn":
|
||||||
|
config.Level = zap.NewAtomicLevelAt(zap.WarnLevel)
|
||||||
|
case "error":
|
||||||
|
config.Level = zap.NewAtomicLevelAt(zap.ErrorLevel)
|
||||||
|
default:
|
||||||
|
config.Level = zap.NewAtomicLevelAt(zap.InfoLevel)
|
||||||
|
}
|
||||||
|
|
||||||
|
logger, err := config.Build()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
globalLogger = logger
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get возвращает глобальный логгер
|
||||||
|
func Get() *zap.Logger {
|
||||||
|
if globalLogger == nil {
|
||||||
|
// Fallback на стандартный логгер если не инициализирован
|
||||||
|
logger, _ := zap.NewProduction()
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
return globalLogger
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sync синхронизирует буферы логгера
|
||||||
|
func Sync() {
|
||||||
|
if globalLogger != nil {
|
||||||
|
globalLogger.Sync()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sugar возвращает SugaredLogger
|
||||||
|
func Sugar() *zap.SugaredLogger {
|
||||||
|
return Get().Sugar()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user