func()

in plugins/core/logreport.go [46:97]


func (t *Tracer) ReportLog(ctx, timeObj interface{}, level, msg string, labels map[string]string) {
	tracingContext, ok := ctx.(logTracingContext)
	if !ok || tracingContext == nil {
		return
	}
	entity := t.ServiceEntity
	if entity == nil {
		return
	}
	timeData, ok := timeObj.(time.Time)
	if !ok {
		// as a fallback strategy to solve some plugins that
		// cannot be introduced into the standard library
		timeData = time.Now()
	}

	tags := &logv3.LogTags{
		Data: []*commonv3.KeyStringValuePair{
			{
				Key:   "LEVEL",
				Value: level,
			},
		},
	}
	for k, v := range labels {
		tags.Data = append(tags.Data, &commonv3.KeyStringValuePair{
			Key:   k,
			Value: v,
		})
	}
	logData := &logv3.LogData{
		Timestamp:       Millisecond(timeData),
		Service:         tracingContext.GetServiceName(),
		ServiceInstance: tracingContext.GetInstanceName(),
		Endpoint:        tracingContext.GetEndPointName(),
		Body: &logv3.LogDataBody{
			Type: "TEXT",
			Content: &logv3.LogDataBody_Text{
				Text: &logv3.TextLog{Text: msg},
			},
		},
		TraceContext: &logv3.TraceContext{
			TraceId:        tracingContext.GetTraceID(),
			TraceSegmentId: tracingContext.GetTraceSegmentID(),
			SpanId:         tracingContext.GetSpanID(),
		},
		Tags:  tags,
		Layer: "GENERAL",
	}

	t.Reporter.SendLog(logData)
}