func()

in cmd/collector/config/config.go [347:408]


func (w *HostLog) Validate() error {
	for k, v := range w.AddAttributes {
		if k == "" {
			return errors.New("host-log.add-attributes key must be set")
		}
		if v == "" {
			return errors.New("host-log.add-attributes value must be set")
		}
	}

	// Empty is ok - defaults to plain
	validLogTypes := []sourceparse.Type{sourceparse.LogTypeDocker, sourceparse.LogTypeCri, sourceparse.LogTypeKubernetes, sourceparse.LogTypePlain, ""}

	for _, v := range w.StaticFileTargets {
		if v.FilePath == "" {
			return errors.New("host-log.file-target.file-path must be set")
		}
		if v.Database == "" {
			return errors.New("host-log.file-target.database must be set")
		}
		if v.Table == "" {
			return errors.New("host-log.file-target.table must be set")
		}

		foundValidType := false
		for _, validType := range validLogTypes {
			if v.LogType == validType {
				foundValidType = true
				break
			}
		}
		if !foundValidType {
			return fmt.Errorf("host-log.file-target.log-type %s is not a valid log type", v.LogType)
		}

		for _, parserName := range v.Parsers {
			if !parser.IsValidParser(parserName) {
				return fmt.Errorf("host-log.file-target.parsers %s is not a valid parser", parserName)
			}
		}
	}

	for _, v := range w.JournalTargets {
		if err := v.Validate(); err != nil {
			return fmt.Errorf("host-log.journal-target.%w", err)
		}
	}

	for _, v := range w.KernelTargets {
		if err := v.Validate(); err != nil {
			return fmt.Errorf("host-log.kernel-target.%w", err)
		}
	}

	for _, v := range w.Transforms {
		if !transforms.IsValidTransformType(v.Name) {
			return fmt.Errorf("host-log.transforms %s is not a valid transform", v.Name)
		}
	}

	return nil
}