in src/ServiceProfiler.EventPipe.Otel/Azure.Monitor.OpenTelemetry.Profiler.Core/EventListeners/TraceSessionListener.cs [84:126]
public void OnRichPayloadEventWritten(EventWrittenEventArgs eventData)
{
_logger.LogTrace("[{Source}] {Action} - ActivityId: {activityId}, EventName: {eventName}, Keywords: {keyWords}, OpCode: {opCode}",
eventData.EventSource.Name,
nameof(OnRichPayloadEventWritten),
eventData.ActivityId,
eventData.EventName,
eventData.Keywords,
eventData.Opcode);
if (string.IsNullOrEmpty(eventData.EventName))
{
return;
}
object? payload = eventData.Payload;
if (payload is null)
{
_logger.LogWarning("Unexpected empty payload.");
return;
}
if (string.Equals(eventData.EventSource.Name, OpenTelemetrySDKEventSourceName, StringComparison.Ordinal) &&
(eventData.EventId == EventId.RequestStart || eventData.EventId == EventId.RequestStop))
{
string requestName = eventData.GetPayload<string>("name") ?? "Unknown";
string id = eventData.GetPayload<string>("id") ?? throw new InvalidDataException("id payload is missing.");
(string operationId, string requestId) = ExtractKeyIds(id);
if (eventData.EventId == 24) // Started
{
HandleRequestStart(eventData, requestName, requestId, operationId, id);
return;
}
if (eventData.EventId == 25) // Stopped
{
HandleRequestStop(eventData, requestName, requestId, operationId, id);
return;
}
}
}