package configs

import (
	"os"

	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)

var Logger *zap.Logger

func init() {
	// initialize default logger early so other packages can use it in their init functions
	LogerAres()
}

func LogerAres() {
	logFile, err := os.Create("./info.log")
	if err != nil {
		// Fallback: sadece konsola yaz
		core := zapcore.NewCore(
			zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig()),
			zapcore.AddSync(os.Stdout),
			zapcore.DebugLevel,
		)
		Logger = zap.New(core, zap.AddCaller())
		Logger.Warn("info.log açılamadı, sadece konsola yazılıyor", zap.Error(err))
		return
	}
	// Hem dosyaya hem konsola yaz (logları görebilirsin)
	encoderConfig := zap.NewProductionEncoderConfig()
	encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
	encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
	encoder := zapcore.NewConsoleEncoder(encoderConfig)
	multiOut := zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(logFile))
	core := zapcore.NewCore(encoder, multiOut, zapcore.DebugLevel)
	Logger = zap.New(core, zap.AddCaller())
	Logger.Info("Logger başlatıldı (konsol + info.log)")
}
