15357fd3c0
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
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()
|
|
} |