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)
}