// Copyright Epic Games, Inc. All Rights Reserved.
using OpenTelemetry.Trace;
namespace HordeServer.Utilities
{
///
/// Static initialization of all available OpenTelemetry tracers
///
public static class OpenTelemetryTracers
{
///
/// Name of resource name attribute in Datadog
/// Some traces use this for prettier display inside their UI
///
public const string DatadogResourceAttribute = "resource.name";
///
/// Name of default Horde tracer (aka activity source)
///
public const string HordeName = "Horde";
///
/// Name of MongoDB tracer (aka activity source)
///
public const string MongoDbName = "MongoDB";
///
/// List of all source names configured in this class.
/// They are needed at startup when initializing OpenTelemetry
///
public static string[] SourceNames => new[] { HordeName, MongoDbName };
///
/// Default tracer used in Horde
/// Prefer dependency-injected tracer over this static member.
///
public static readonly Tracer Horde = TracerProvider.Default.GetTracer(HordeName);
///
/// Tracer specific to MongoDB
/// Prefer StartMongoDbSpan static extension for Tracer.
///
public static readonly Tracer MongoDb = TracerProvider.Default.GetTracer(MongoDbName);
}
}