package logging

import (
	"fmt"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)

func InitLogging(level zap.AtomicLevel, outputFiles, errorFiles []string) {
	encoderConfig := zap.NewProductionEncoderConfig()

	encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("[2006-01-02 15:04:05] -")
	encoderConfig.ConsoleSeparator = " "
	encoderConfig.EncodeLevel = func(level zapcore.Level, encoder zapcore.PrimitiveArrayEncoder) {
		encoder.AppendString(fmt.Sprintf("%s:", level.CapitalString()))
	}
	encoderConfig.EncodeCaller = nil

	config := zap.NewProductionConfig()
	config.EncoderConfig = encoderConfig
	config.Encoding = "console"
	config.Level = level
	config.OutputPaths = outputFiles
	config.ErrorOutputPaths = errorFiles

	logger, err := config.Build()
	if err != nil {
		panic(err)
	}

	zap.ReplaceGlobals(logger)
}