in confgenerator/confgenerator.go [317:342]
func processUserDefinedMultilineParser(i int, pID string, receiver LoggingReceiver, processor LoggingProcessor, receiverComponents []fluentbit.Component, processorComponents []fluentbit.Component) error {
var multilineParserNames []string
if processor.Type() != "parse_multiline" {
return nil
}
for _, p := range processorComponents {
if p.Kind == "MULTILINE_PARSER" {
multilineParserNames = append(multilineParserNames, p.Config["name"])
}
}
allowedMultilineReceiverTypes := []string{"files"}
for _, r := range receiverComponents {
if len(multilineParserNames) != 0 &&
!contains(allowedMultilineReceiverTypes, receiver.Type()) {
return fmt.Errorf(`processor %q with type "parse_multiline" can only be applied on receivers with type "files"`, pID)
}
if len(multilineParserNames) != 0 {
r.Config["multiline.parser"] = strings.Join(multilineParserNames, ",")
}
}
if i != 0 {
return fmt.Errorf(`at most one logging processor with type "parse_multiline" is allowed in the pipeline. A logging processor with type "parse_multiline" must be right after a logging receiver with type "files"`)
}
return nil
}