package logger

import (
	"game-driver/config"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"log"
	"os"
)

func DefaultLogger() {
	logger, _ := zap.NewDevelopment()
	zap.ReplaceGlobals(logger)
}

func InitDevLogger() {
	// 解析日志级别
	level, err := zapcore.ParseLevel(config.C.Log.Level)
	if err != nil {
		log.Panicln("日志级别配置错误: ", err)
	}

	// 默认开发模式
	nc := zap.NewDevelopmentEncoderConfig()
	// console 格式输出
	cn := zapcore.NewConsoleEncoder(nc)

	// 多个输出
	mws := zapcore.NewMultiWriteSyncer(zapcore.AddSync(config.C.Log.File), zapcore.AddSync(os.Stdout))

	// 核心配置
	core := zapcore.NewCore(cn, mws, level)

	// 构建 logger
	logger := zap.New(core, zap.AddCaller())

	// 替换全局 logger
	zap.ReplaceGlobals(logger)
}

func InitProLogger(cls *TenCls) {
	// 解析日志级别
	level, err := zapcore.ParseLevel(config.C.Log.Level)
	if err != nil {
		log.Panicln("日志级别配置错误: ", err)
	}

	// 默认开发模式
	nc := zap.NewProductionEncoderConfig()
	// json 格式输出
	cn := zapcore.NewJSONEncoder(nc)

	// 多个输出
	mws := zapcore.NewMultiWriteSyncer(zapcore.AddSync(cls), zapcore.AddSync(config.C.Log.File), zapcore.AddSync(os.Stdout))

	// 核心配置
	core := zapcore.NewCore(cn, mws, level)

	// 构建 logger
	logger := zap.New(core, zap.AddCaller())

	// 替换全局 logger
	zap.ReplaceGlobals(logger)
}

func Sync() {
	zap.L().Sync()
}
