func()

in cloudwatch/cloudwatch.go [508:545]


func (output *OutputPlugin) setGroupStreamNames(e *Event) {
	// This happens here to avoid running Split more than once per log Event.
	logTagSplit := strings.SplitN(e.Tag, ".", 10)
	s := &sanitizer{sanitize: sanitizeGroup, buf: output.bufferPool.Get()}

	if _, err := parseDataMapTags(e, logTagSplit, output.logGroupName, output.ecsMetadata, output.uuid, s); err != nil {
		e.group = output.defaultLogGroupName
		logrus.Errorf("[cloudwatch %d] parsing log_group_name template '%s' "+
			"(using value of default_log_group_name instead): %v",
			output.PluginInstanceID, output.logGroupName.String, err)
	} else if e.group = s.buf.String(); len(e.group) == 0 {
		e.group = output.defaultLogGroupName
	} else if len(e.group) > maxGroupStreamLength {
		e.group = e.group[:maxGroupStreamLength]
	}

	if output.logStreamPrefix != "" {
		e.stream = output.logStreamPrefix + e.Tag
		output.bufferPool.Put(s.buf)

		return
	}

	s.sanitize = sanitizeStream
	s.buf.Reset()

	if _, err := parseDataMapTags(e, logTagSplit, output.logStreamName, output.ecsMetadata, output.uuid, s); err != nil {
		e.stream = output.defaultLogStreamName
		logrus.Errorf("[cloudwatch %d] parsing log_stream_name template '%s': %v",
			output.PluginInstanceID, output.logStreamName.String, err)
	} else if e.stream = s.buf.String(); len(e.stream) == 0 {
		e.stream = output.defaultLogStreamName
	} else if len(e.stream) > maxGroupStreamLength {
		e.stream = e.stream[:maxGroupStreamLength]
	}

	output.bufferPool.Put(s.buf)
}