in src/Activities/Internal/EventSource/ActivityEventSender.cs [25:105]
public void SendActivityMetric(Activity activity)
{
if (!m_eventSource.IsEnabled())
{
return;
}
string serviceName = m_serviceName;
string activityId = activity.Id ?? string.Empty;
string name = activity.OperationName;
double durationMs = activity.Duration.TotalMilliseconds;
string userHash = activity.GetUserHash();
bool isHealthCheck = activity.IsHealthCheck();
string subtype = NullPlaceholder;
string metadata = NullPlaceholder;
string resultAsString = NullPlaceholder;
foreach (KeyValuePair<string, string?> pair in activity.Tags)
{
if (pair.Value == null)
{
continue;
}
if (string.Equals(ActivityTagKeys.Result, pair.Key, StringComparison.Ordinal))
{
resultAsString = pair.Value;
}
else if (string.Equals(ActivityTagKeys.SubType, pair.Key, StringComparison.Ordinal))
{
subtype = pair.Value;
}
else if (string.Equals(ActivityTagKeys.Metadata, pair.Key, StringComparison.Ordinal))
{
metadata = pair.Value;
}
}
#pragma warning disable CS0618 // Until it's used we need to include correlationId into events
string correlationId = activity.GetObsoleteCorrelationId()?.ToString()
?? activity.GetRootIdAsGuid()?.ToString()
?? NullPlaceholder;
#pragma warning restore CS0618
string nameAsString = SanitizeString(name, nameof(name), name);
string subTypeAsString = SanitizeString(subtype, nameof(subtype), name);
string metaDataAsString = SanitizeString(metadata, nameof(metadata), name);
string userHashAsString = SanitizeString(userHash, nameof(userHash), name);
string serviceNameAsString = SanitizeString(serviceName, nameof(serviceName), name);
string correlationIdAsString = SanitizeString(correlationId, nameof(correlationId), name);
string activityIdAsString = SanitizeString(activityId, nameof(activityId), name);
long durationMsAsLong = Convert.ToInt64(durationMs, CultureInfo.InvariantCulture);
if (isHealthCheck)
{
m_eventSource.WriteTimedScopeTestEvent(
name: nameAsString,
subType: subTypeAsString,
metadata: metaDataAsString,
serviceName: serviceNameAsString,
logCategory: s_logCategory,
result: resultAsString,
correlationId: correlationIdAsString,
activityId: activityIdAsString,
durationMs: durationMsAsLong);
}
else
{
m_eventSource.WriteTimedScopeEvent(
name: nameAsString,
subType: subTypeAsString,
metadata: metaDataAsString,
userHash: userHashAsString,
serviceName: serviceNameAsString,
logCategory: s_logCategory,
result: resultAsString,
correlationId: correlationIdAsString,
activityId: activityIdAsString,
durationMs: durationMsAsLong);
}
}