func()

in confgenerator/config.go [829:882]


func (uc *UnifiedConfig) ValidateLogging() error {
	l := uc.Logging
	subagent := "logging"
	if len(l.Exporters) > 0 {
		log.Print(`The "logging.exporters" field is no longer needed and will be ignored. This does not change any functionality. Please remove it from your configuration.`)
	}
	if l.Service == nil {
		return nil
	}
	validReceivers := map[string]bool{}
	for k := range l.Receivers {
		validReceivers[k] = true
	}
	if uc.Combined != nil {
		for k := range uc.Combined.Receivers {
			// TODO: What about combined receivers that don't support logging (none exist today)?
			validReceivers[k] = true
		}
	}
	validProcessors := map[string]LoggingProcessor{}
	for k, v := range l.Processors {
		validProcessors[k] = v
	}
	for _, k := range defaultProcessors {
		validProcessors[k] = nil
	}
	portTaken := map[uint16]string{} // port -> receiverId map
	for _, id := range sortedKeys(l.Service.Pipelines) {
		p := l.Service.Pipelines[id]
		if err := validateComponentKeys(validReceivers, p.ReceiverIDs, subagent, "receiver", id); err != nil {
			return err
		}
		if err := validateComponentKeys(validProcessors, p.ProcessorIDs, subagent, "processor", id); err != nil {
			return err
		}
		if _, err := validateComponentTypeCounts(l.Receivers, p.ReceiverIDs, subagent, "receiver"); err != nil {
			return err
		}
		if _, err := validateComponentTypeCounts(l.Processors, p.ProcessorIDs, subagent, "processor"); err != nil {
			return err
		}
		// portTaken will be modified/updated by the validation function
		if _, err := validateReceiverPorts(portTaken, l.Receivers.GetListenPorts(), p.ReceiverIDs); err != nil {
			return err
		}
		if err := validateWinlogRenderAsXML(l.Receivers, p.ReceiverIDs); err != nil {
			return err
		}
		if len(p.ExporterIDs) > 0 {
			log.Printf(`The "logging.service.pipelines.%s.exporters" field is deprecated and will be ignored. Please remove it from your configuration.`, id)
		}
	}
	return nil
}