File: Telemetry\VisualStudioTelemetryTypes.cs
Web Access
Project: src\src\Aspire.Dashboard\Aspire.Dashboard.csproj (Aspire.Dashboard)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Text.Json.Serialization;
 
namespace Aspire.Dashboard.Telemetry;
 
// Types from MS.VS.VisualStudio that we are using in lieu of referencing the entire package
 
public class TelemetryEventCorrelation
{
    [JsonPropertyName("id")]
    public required Guid Id { get; set; }
 
    [JsonPropertyName("eventType")]
    [JsonConverter(typeof(JsonStringEnumConverter))]
    public DataModelEventType EventType { get; set; }
}
 
public enum TelemetryResult
{
    /// <summary>Used for unknown or unavailable result.</summary>
    None,
    /// <summary>A result without any failure from product or user.</summary>
    Success,
    /// <summary>
    /// A result to indicate the action/operation failed because of product issue (not user faults)
    /// Consider using FaultEvent to provide more details about the failure.
    /// </summary>
    Failure,
    /// <summary>
    /// A result to indicate the action/operation failed because of user fault (e.g., invalid input).
    /// Consider using FaultEvent to provide more details.
    /// </summary>
    UserFault,
    /// <summary>
    /// A result to indicate the action/operation is cancelled by user.
    /// </summary>
    UserCancel,
}
 
public enum DataModelEventType
{
    /// <summary>User task event</summary>
    UserTask,
    /// <summary>Trace event</summary>
    Trace,
    /// <summary>Operation event</summary>
    Operation,
    /// <summary>Fault event</summary>
    Fault,
    /// <summary>Asset event</summary>
    Asset,
}
 
public enum TelemetrySeverity
{
    /// <summary>indicates telemetry event with verbose information.</summary>
    Low = -10, // 0xFFFFFFF6
    /// <summary>indicates a regular telemetry event.</summary>
    Normal = 0,
    /// <summary>
    /// indicates telemetry event with high value or require attention (e.g., fault).
    /// </summary>
    High = 10, // 0x0000000A
}
 
public enum FaultSeverity
{
    /// <summary>
    /// Uncategorized faults have no severity assigned by the developer. Developers should NOT use this severity in any new instrumentation.
    /// The majority of uncategorized faults are being assigned the uncategorized value by default in legacy code.
    /// Teams with high volumes of uncategorized fault data may be asked to make changes to add real severity to their faults.
    /// </summary>
    Uncategorized,
    /// <summary>
    /// Diagnostics faults represent faults which are likely informational in nature. The fault may have no clear tangible impact, it may
    /// be considered "by design" but still undesirable, or the fault only matters in relation to other faults. The fault information is
    /// nonetheless useful to investigate or root-cause an issue, or to inform future investments or changes to design, but the fault
    /// is not itself an indicator of an issue warranting attention.
    /// </summary>
    Diagnostic,
    /// <summary>
    /// General faults are the most common type of fault - the impact or significance of the fault may not be known during instrumentation.
    /// Further investigation may be required to understand the nature of the fault and, if possible, assign a more useful severity.
    /// </summary>
    General,
    /// <summary>
    /// Critical faults are faults which represent likely bugs or notable user impact. If this kind of fault is seen, there is a high
    /// likelihood that there is some kind of bug ultimately causing the issue.
    /// </summary>
    Critical,
    /// <summary>
    /// Crash faults are faults which definitively represent a bug or notable user impact because they represent a fatal crash. While
    /// Watson or other systems may collect a crash dump, crash faults are likely to include other contextual diagnostic information.
    /// </summary>
    Crash,
}