ed355ee60d
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
66 lines
1.6 KiB
Go
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()
|
|
} |