Files
tp/main_dc/BB/api_bb/pkg/logger/logger.go
T
valitovgaziz 15357fd3c0 create and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarbacreate and moove into new directories for BegushiyBashkir and
yalarba
2025-10-24 05:22:44 +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()
}