Browse Source

Add clear existed backend feature.

ZRY 1 year ago
parent
commit
31cb2911c8
1 changed files with 28 additions and 11 deletions
  1. 28 11
      hieda_yamlutil/yamlutil.go

+ 28 - 11
hieda_yamlutil/yamlutil.go

@@ -121,7 +121,7 @@ func getInternetIP() (string, error) {
 type HiedaLogYamlUtil struct {
 	alisls_bknlist []*hiedabke_alisls.HiedaBackendAliSLS
 	Logger         *hiedalog.HiedaLogger
-	AddedBackends  map[string]*hiedalog.HiedaLogBackend
+	AddedBackends  map[string]hiedalog.HiedaLogBackend
 }
 
 func (hyu *HiedaLogYamlUtil) StartAliSLS() {
@@ -146,11 +146,17 @@ func (hyu *HiedaLogYamlUtil) Shutdown(timeout_ms int64) error {
 	return nil
 }
 
+type addInfo struct {
+	Name    string
+	Backend hiedalog.HiedaLogBackend
+	Level   uint8
+}
+
 func CreateHiedaLoggerFromYAMLData(cfgdata CommonLogConfigYAML, autoStartAliSLS bool) (*HiedaLogYamlUtil, error) {
 	hyu := &HiedaLogYamlUtil{
 		Logger:         hiedalog.NewHiedaLogger(),
 		alisls_bknlist: make([]*hiedabke_alisls.HiedaBackendAliSLS, 0),
-		AddedBackends:  make(map[string]*hiedalog.HiedaLogBackend),
+		AddedBackends:  make(map[string]hiedalog.HiedaLogBackend),
 	}
 	if cfgdata.Enable {
 		if cfgdata.Backends != nil {
@@ -175,7 +181,7 @@ func CreateHiedaLoggerFromYAMLData(cfgdata CommonLogConfigYAML, autoStartAliSLS
 					return nil, err
 				}
 				hyu.Logger.AddBackend(cins, lvi)
-				hyu.AddedBackends[k] = &cins
+				hyu.AddedBackends[k] = cins
 			}
 		}
 	}
@@ -185,18 +191,19 @@ func CreateHiedaLoggerFromYAMLData(cfgdata CommonLogConfigYAML, autoStartAliSLS
 	return hyu, nil
 }
 
-func AddBackendsFromYAMLDataWithExistedLogger(logger *hiedalog.HiedaLogger, cfgdata CommonLogConfigYAML, autoStartAliSLS bool) error {
+func AddBackendsFromYAMLDataWithExistedLogger(logger *hiedalog.HiedaLogger, cfgdata CommonLogConfigYAML, autoStartAliSLS bool, clearExistBackends bool) (*HiedaLogYamlUtil, error) {
 	hyu := &HiedaLogYamlUtil{
 		Logger:         logger,
 		alisls_bknlist: make([]*hiedabke_alisls.HiedaBackendAliSLS, 0),
-		AddedBackends:  make(map[string]*hiedalog.HiedaLogBackend),
+		AddedBackends:  make(map[string]hiedalog.HiedaLogBackend),
 	}
 	if cfgdata.Enable {
 		if cfgdata.Backends != nil {
+			addlist := make([]*addInfo, 0)
 			for k, v := range cfgdata.Backends {
 				lvi := hyu.Logger.LevelFilter.NameToID(v.Level)
 				if lvi == 7 {
-					return fmt.Errorf("unsupported log level '%s' in backend '%s'", v.Level, k)
+					return nil, fmt.Errorf("unsupported log level '%s' in backend '%s'", v.Level, k)
 				}
 				var cins hiedalog.HiedaLogBackend
 				var err error
@@ -208,18 +215,28 @@ func AddBackendsFromYAMLDataWithExistedLogger(logger *hiedalog.HiedaLogger, cfgd
 				case "alisls":
 					cins, err = hyu.parseAlislsBackend(v)
 				default:
-					return fmt.Errorf("unsupported log backend type '%s' in backend '%s'", v.Type, k)
+					return nil, fmt.Errorf("unsupported log backend type '%s' in backend '%s'", v.Type, k)
 				}
 				if err != nil {
-					return err
+					return nil, err
 				}
-				hyu.Logger.AddBackend(cins, lvi)
-				hyu.AddedBackends[k] = &cins
+				addlist = append(addlist, &addInfo{
+					Name:    k,
+					Backend: cins,
+					Level:   lvi,
+				})
+			}
+			if clearExistBackends {
+				hyu.Logger.BackendConfigs = make([]hiedalog.HiedaLogBackendConfig, 0)
+			}
+			for _, v := range addlist {
+				hyu.Logger.AddBackend(v.Backend, v.Level)
+				hyu.AddedBackends[v.Name] = v.Backend
 			}
 		}
 	}
 	if autoStartAliSLS {
 		hyu.StartAliSLS()
 	}
-	return nil
+	return hyu, nil
 }