package initialize

import (
	"dhcp/global"
	"fmt"
	"github.com/go-logr/zapr"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"os"
	"time"
)

// defaultLogger is zap logr implementation.
func InitLogger(level string) {

	config := zap.NewProductionConfig()
	file := initLogFile()
	config.OutputPaths = []string{"stdout", file}
	switch level {
	case "debug":
		config.Level = zap.NewAtomicLevelAt(zapcore.DebugLevel)
	default:
		config.Level = zap.NewAtomicLevelAt(zapcore.InfoLevel)
	}
	zapLogger, err := config.Build()
	if err != nil {
		panic(fmt.Sprintf("who watches the watchmen (%v)?", err))
	}

	global.Log = zapr.NewLogger(zapLogger)
}

func initLogFile() string {
	// 获取当前日期

	currentTime := time.Now()

	err := os.MkdirAll("log", os.ModePerm)
	if err != nil {
		panic(err)
	}
	// 格式化日期作为文件名
	filename := "log/app_" + currentTime.Format("2006-01-02") + ".log"

	_, err2 := os.Create(filename)
	if err2 != nil {
		global.Log.Error(err2, "create log file failed")
	}
	return filename
}
