package global

import (
	"enterprise/common/config"
	rotatelogs "github.com/lestrrat-go/file-rotatelogs"
	"github.com/rifflock/lfshook"
	log "github.com/sirupsen/logrus"
	"github.com/smbrave/goutil"
	"os"
	"time"
)

func initLog() error {
	cfg := config.GetConfig()
	logfile := "log/server.log"
	writer, err := rotatelogs.New(
		logfile+".%Y%m%d",
		rotatelogs.WithLinkName(logfile),
		rotatelogs.WithMaxAge(time.Duration(86400*7)*time.Second),
		rotatelogs.WithRotationTime(time.Duration(86400)*time.Second),
	)
	if err != nil {
		return err
	}

	pathMap := lfshook.WriterMap{
		log.TraceLevel: writer,
		log.DebugLevel: writer,
		log.InfoLevel:  writer,
		log.WarnLevel:  writer,
		log.ErrorLevel: writer,
		log.FatalLevel: writer,
		log.PanicLevel: writer,
	}

	log.AddHook(lfshook.NewHook(pathMap, new(goutil.LogFile)))

	log.SetOutput(os.Stdout)
	log.SetReportCaller(true)
	log.SetFormatter(new(goutil.LogFile))
	log.SetLevel(log.Level(cfg.Server.LogLevel))
	return nil
}