package hiedabke_alisls import ( "git.swzry.com/zry/GoHiedaLogger/hiedalog" "github.com/aliyun/aliyun-log-go-sdk/producer" "strconv" "time" ) type HiedaBackendAliSLS struct { prod *producer.Producer proj string logstore string topic string hostname string appname string srcip string } func (b *HiedaBackendAliSLS) EmitStringLog(module string, level hiedalog.HiedaLogLevel, content string) { e := b.generateStringLogEntity(module, level, content) b.emitLogToSLS(e) } func (b *HiedaBackendAliSLS) EmitComplexLog(module string, level hiedalog.HiedaLogLevel, data map[string]string) { e := b.generateComplexLogEntity(module, level, data) b.emitLogToSLS(e) } func (l *HiedaBackendAliSLS) generateStringLogEntity(module string, level hiedalog.HiedaLogLevel, logcontent string) map[string]string { return map[string]string{ "hostname": l.hostname, "app": l.appname, "module": module, "level_id": strconv.Itoa(int(level.LevelNumber)), "level": level.Name, "content": logcontent, } } func (l *HiedaBackendAliSLS) generateComplexLogEntity(module string, level hiedalog.HiedaLogLevel, data map[string]string) map[string]string { m := map[string]string{ "hostname": l.hostname, "app": l.appname, "module": module, "level_id": strconv.Itoa(int(level.LevelNumber)), "level": level.Name, } for k, v := range data { m[k] = v } return m } func (l *HiedaBackendAliSLS) emitLogToSLS(entity map[string]string) { log := producer.GenerateLog(uint32(time.Now().Unix()), entity) _ = l.prod.SendLog(l.proj, l.logstore, l.topic, l.srcip, log) } func (l *HiedaBackendAliSLS) StartProducer() { l.prod.Start() } func (l *HiedaBackendAliSLS) StopProducer(timeout_ms int64) error { return l.prod.Close(timeout_ms) } func (l *HiedaBackendAliSLS) SafeStopProducer() { l.prod.SafeClose() }