in appinsights/telemetrycontext.go [46:104]
func (context *TelemetryContext) envelop(item Telemetry) *contracts.Envelope {
// Apply common properties
if props := item.GetProperties(); props != nil && context.CommonProperties != nil {
for k, v := range context.CommonProperties {
if _, ok := props[k]; !ok {
props[k] = v
}
}
}
tdata := item.TelemetryData()
data := contracts.NewData()
data.BaseType = tdata.BaseType()
data.BaseData = tdata
envelope := contracts.NewEnvelope()
envelope.Name = tdata.EnvelopeName(context.nameIKey)
envelope.Data = data
envelope.IKey = context.iKey
timestamp := item.Time()
if timestamp.IsZero() {
timestamp = currentClock.Now()
}
envelope.Time = timestamp.UTC().Format("2006-01-02T15:04:05.999999Z")
if contextTags := item.ContextTags(); contextTags != nil {
envelope.Tags = contextTags
// Copy in default tag values.
for tagkey, tagval := range context.Tags {
if _, ok := contextTags[tagkey]; !ok {
contextTags[tagkey] = tagval
}
}
} else {
// Create new tags object
envelope.Tags = make(map[string]string)
for k, v := range context.Tags {
envelope.Tags[k] = v
}
}
// Create operation ID if it does not exist
if _, ok := envelope.Tags[contracts.OperationId]; !ok {
envelope.Tags[contracts.OperationId] = newUUID().String()
}
// Sanitize.
for _, warn := range tdata.Sanitize() {
diagnosticsWriter.Printf("Telemetry data warning: %s", warn)
}
for _, warn := range contracts.SanitizeTags(envelope.Tags) {
diagnosticsWriter.Printf("Telemetry tag warning: %s", warn)
}
return envelope
}