@@ -574,23 +574,8 @@ bool NetworkObserverManager::ConsumeLogAggregateTree() { // handler
574574 logEvent->SetContent (kLatencyNS .LogKey (), std::to_string (record->GetLatencyNs ()));
575575 auto timeSpec = ConvertKernelTimeToUnixTime (record->GetStartTimeStamp ());
576576 logEvent->SetTimestamp (timeSpec.tv_sec , timeSpec.tv_nsec );
577- auto protocol = record->GetConnection ()->GetProtocol ();
578- if (protocol == support_proto_e::ProtoHTTP) {
579- auto * httpRecord = static_cast <HttpRecord*>(record);
580- logEvent->SetContent (kHTTPMethod .LogKey (), httpRecord->GetMethod ());
581- logEvent->SetContent (kHTTPPath .LogKey (),
582- httpRecord->GetRealPath ().size () ? httpRecord->GetRealPath ()
583- : httpRecord->GetPath ());
584- logEvent->SetContent (kHTTPVersion .LogKey (), httpRecord->GetProtocolVersion ());
585- logEvent->SetContent (kStatusCode .LogKey (), std::to_string (httpRecord->GetStatusCode ()));
586- logEvent->SetContent (kHTTPReqBody .LogKey (), httpRecord->GetReqBody ());
587- logEvent->SetContent (kHTTPRespBody .LogKey (), httpRecord->GetRespBody ());
588- } else if (protocol == support_proto_e::ProtoMySQL) {
589- auto * mysqlRecord = static_cast <MysqlRecord*>(record);
590- logEvent->SetContent (kDBSystemName .LogKey (), " mysql" );
591- logEvent->SetContent (kDBResponseStatusCode .LogKey (), std::to_string (mysqlRecord->GetStatusCode ()));
592- logEvent->SetContent (kDBStatement .LogKey (), mysqlRecord->GetSql ());
593- }
577+ // Fill protocol-specific log fields using polymorphism
578+ record->FillProtocolSpecificLogFields (logEvent);
594579 LOG_DEBUG (sLogger , (" add one log, log timestamp" , timeSpec.tv_sec )(" nano" , timeSpec.tv_nsec ));
595580 needPush = true ;
596581 }
@@ -1080,26 +1065,8 @@ bool NetworkObserverManager::ConsumeSpanAggregateTree() { // handler
10801065 }
10811066
10821067 spanEvent->SetName (record->GetSpanName ());
1083- auto protocol = record->GetConnection ()->GetProtocol ();
1084- if (protocol == support_proto_e::ProtoHTTP) {
1085- auto * httpRecord = static_cast <HttpRecord*>(record);
1086- spanEvent->SetTag (kRpc .SpanKey (), httpRecord->GetConvSpanName ());
1087- if (!ct->IsServer ()) {
1088- spanEvent->SetTag (kEndpoint .SpanKey (), httpRecord->GetConvSpanName ());
1089- }
1090- spanEvent->SetTag (kHTTPReqBody .SpanKey (), httpRecord->GetReqBody ());
1091- spanEvent->SetTag (kHTTPRespBody .SpanKey (), httpRecord->GetRespBody ());
1092- spanEvent->SetTag (kHTTPReqBodySize .SpanKey (), std::to_string (httpRecord->GetReqBodySize ()));
1093- spanEvent->SetTag (kHTTPRespBodySize .SpanKey (), std::to_string (httpRecord->GetRespBodySize ()));
1094- spanEvent->SetTag (kHTTPVersion .SpanKey (), httpRecord->GetProtocolVersion ());
1095- // spanEvent->SetTag(kHTTPReqHeader.SpanKey(), httpRecord->GetReqHeaderMap());
1096- // spanEvent->SetTag(kHTTPRespHeader.SpanKey(), httpRecord->GetRespHeaders());
1097- } else if (protocol == support_proto_e::ProtoMySQL) {
1098- auto * mysqlRecord = static_cast <MysqlRecord*>(record);
1099- spanEvent->SetTag (kDBSystemName .SpanKey (), " mysql" );
1100- spanEvent->SetTag (kDBResponseStatusCode .SpanKey (), std::to_string (mysqlRecord->GetStatusCode ()));
1101- spanEvent->SetTag (kDBStatement .SpanKey (), mysqlRecord->GetSql ());
1102- }
1068+ // Fill protocol-specific span fields using polymorphism
1069+ record->FillProtocolSpecificSpanFields (spanEvent, ct->IsServer ());
11031070
11041071 struct timespec startTime = ConvertKernelTimeToUnixTime (record->GetStartTimeStamp ());
11051072 struct timespec endTime = ConvertKernelTimeToUnixTime (record->GetEndTimeStamp ());
0 commit comments