package log

import (
	"os"

	"github.com/sirupsen/logrus"
	"gopkg.in/natefinch/lumberjack.v2"
)

var Log = logrus.New()

func Init() {
	if os.Getenv("LOG_FOLDER") != "" {
		Log.Info("Initializing file logger")
		Log.SetOutput(os.Stdout)
		Log.AddHook(&LumberjackHook{
			Logger: &lumberjack.Logger{
				Filename:   os.Getenv("LOG_FOLDER") + "/application.log",
				MaxSize:    10,   // Max size in MB
				MaxBackups: 3,    // Max number of old log files to keep
				MaxAge:     28,   // Max age in days to keep a log file
				Compress:   true, // Compress old log files
			}})
		Log.SetFormatter(&logrus.TextFormatter{
			FullTimestamp: true,
		})
	}

	if os.Getenv("LOG_LEVEL") == "" {
		Log.SetLevel(logrus.InfoLevel)
	} else {
		switch os.Getenv("LOG_LEVEL") {
		case "ERROR":
			Log.SetLevel(logrus.ErrorLevel)
		case "WARN":
			Log.SetLevel(logrus.WarnLevel)
		case "INFO":
			Log.SetLevel(logrus.InfoLevel)
		case "DEBUG":
			Log.SetLevel(logrus.DebugLevel)
		}
	}
	Log.Infof("Logger initialized with %s log level", Log.Level)
}