Files
tp/main_dc/yalarba/api_es/pkg/logger/logger.go
T
valitovgaziz ed355ee60d modified: main_dc/docker-compose.yml
modified:   main_dc/yalarba/api_es/.env
	modified:   main_dc/yalarba/api_es/cmd/main.go
	modified:   main_dc/yalarba/api_es/go.mod
	modified:   main_dc/yalarba/api_es/go.sum
	new file:   main_dc/yalarba/api_es/internal/config/config.go
	new file:   main_dc/yalarba/api_es/internal/database/psql_db.go
	new file:   main_dc/yalarba/api_es/pkg/logger/helpers.go
	new file:   main_dc/yalarba/api_es/pkg/logger/interface.go
	new file:   main_dc/yalarba/api_es/pkg/logger/logger.go
	new file:   main_dc/yalarba/api_es/pkg/logger/route_logger.go
add new User model for api_es
add global zapLogger api_es
add configs dotenv api_es
sipmplify main api_es
2025-11-11 05:58:36 +05:00

66 lines
1.6 KiB
Go

// 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()
}