File: Logging\LoggerEnrichmentOptions.cs
Web Access
Project: src\src\Libraries\Microsoft.Extensions.Telemetry\Microsoft.Extensions.Telemetry.csproj (Microsoft.Extensions.Telemetry)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.ComponentModel.DataAnnotations;
 
namespace Microsoft.Extensions.Logging;
 
/// <summary>
/// Options for logging enrichment features.
/// </summary>
public class LoggerEnrichmentOptions
{
    private const int MaxDefinedStackTraceLength = 32768;
    private const int MinDefinedStackTraceLength = 2048;
    private const int DefaultStackTraceLength = 4096;
 
    /// <summary>
    /// Gets or sets a value indicating whether to include stack traces when an exception is logged.
    /// </summary>
    /// <value>
    /// The default value is <see langword="false"/>.
    /// </value>
    /// <remarks>
    /// When set to <see langword="true"/> and exceptions are logged, the logger will add exception stack trace
    /// with inner exception as a separate key-value pair with key 'stackTrace'. The maximum length of the column
    /// defaults to 4096 characters and can be modified by setting the <see cref="MaxStackTraceLength"/> property.
    /// The stack trace beyond the current limit will be truncated.
    /// </remarks>
    public bool CaptureStackTraces { get; set; }
 
    /// <summary>
    /// Gets or sets a value indicating whether to consult debugging files (PDB files) when producing stack traces.
    /// </summary>
    /// <remarks>
    /// Reading available debugging files produces richer stack traces, but can cost a substantial amount of time
    /// to generate. As a result, this option should only be turned on in development scenarios, not for production use.
    ///
    /// This property has no effect if <see cref="CaptureStackTraces"/> is <see langword="false"/>.
    /// 
    /// This defaults to <see langword="false"/>.
    /// </remarks>
    public bool UseFileInfoForStackTraces { get; set; }
 
    /// <summary>
    /// Gets or sets a value indicating whether to include the exception message when an exception is logged.
    /// </summary>
    /// <value>
    /// This defaults to <see langword="false"/>.
    /// </value>
    /// <remarks>
    /// When both <see cref="IncludeExceptionMessage"/> and <see cref="CaptureStackTraces"/> are set to
    /// <see langword="true"/> exception messages are also included in stack traces.
    /// </remarks>
    public bool IncludeExceptionMessage { get; set; }
 
    /// <summary>
    /// Gets or sets the maximum stack trace length to emit for a given log record.
    /// </summary>
    /// <value>
    /// The default value is 4096.
    /// </value>
    /// <remarks>
    /// When set to a value less than 2 KB or greater than 32 KB, an exception will be thrown.
    ///
    /// This property has no effect if <see cref="CaptureStackTraces"/> is <see langword="false"/>.
    /// </remarks>
    [Range(MinDefinedStackTraceLength, MaxDefinedStackTraceLength)]
    public int MaxStackTraceLength { get; set; } = DefaultStackTraceLength;
}