refactor: use log:set for logs and add global support

This commit is contained in:
Jose Diaz-Gonzalez
2021-01-22 00:39:08 -05:00
parent 6eb0bd8c87
commit afe1e8b33c
11 changed files with 212 additions and 26 deletions

58
plugins/logs/set.go Normal file
View File

@@ -0,0 +1,58 @@
package logs
import (
"errors"
"fmt"
"strconv"
)
func validateSetValue(appName string, key string, value string) error {
if key == "max-size" {
return validateMaxSize(appName, value)
}
if key == "vector-sink" {
return validateVectorSink(appName, value)
}
return nil
}
func validateMaxSize(appName string, value string) error {
if value == "" {
return nil
}
if value == "unlimited" {
return nil
}
last := value[len(value)-1:]
if last != "k" && last != "m" && last != "g" {
return errors.New("Invalid max-size unit measure, value must end in any of [k, m, g]")
}
if len(value) < 2 {
return errors.New("Invalid max-size value, must be a number followed by a unit of measure [k, m, d]")
}
number := value[:len(value)-1]
if _, err := strconv.Atoi(number); err != nil {
return fmt.Errorf("Invalid max-size value, unable to convert number to int: %s", err.Error())
}
return nil
}
func validateVectorSink(appName string, value string) error {
if value == "" {
return nil
}
_, err := valueToConfig(appName, value)
if err != nil {
return err
}
return nil
}