package impl_es

import (
	"sync"
	"time"
)

var (
	logPool = sync.Pool{
		New: func() interface{} {
			return &EsLogModel{}
		},
	}
)

// 日志对象
type EsLogModel struct {
	// 日志类型
	LogType string

	// 日志消息
	Message string

	// 程序标识
	InnerId string

	// Extendstr 扩展信息
	Extendstr string

	// 日志时间
	CrTime time.Time
}

// newEsLogModel
// @description: 构造esLog对象
// parameter:
//		@logType:日志类型
//		@msg:日志内容
//		@innerId:内部唯一id
//		@extendCb:扩展信息回调方法
// return:
//		@*EsLogModel:
func newEsLogModel(logType string, msg string, innerId string, extendCb func() string) *EsLogModel {
	logObj := logPool.Get().(*EsLogModel)

	logObj.CrTime = time.Now()
	logObj.LogType = logType
	logObj.Message = msg
	logObj.InnerId = innerId
	logObj.Extendstr = extendCb()

	return logObj
}
