| File: CommandLoggingContext.cs | Web Access |
| Project: src\sdk\src\Cli\Microsoft.DotNet.Cli.Utils\Microsoft.DotNet.Cli.Utils.csproj (Microsoft.DotNet.Cli.Utils) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.DotNet.Cli.Utils; /// <summary> /// Defines settings for logging. /// </summary> public static class CommandLoggingContext { public static class Variables { private const string Prefix = "DOTNET_CLI_CONTEXT_"; public static readonly string Verbose = Prefix + "VERBOSE"; public static readonly string VerboseToStdErr = Prefix + "VERBOSE_TO_STDERR"; internal static readonly string Output = Prefix + "OUTPUT"; internal static readonly string Error = Prefix + "ERROR"; internal static readonly string AnsiPassThru = Prefix + "ANSI_PASS_THRU"; } private static Lazy<bool> s_verbose = new(() => Env.GetEnvironmentVariableAsBool(Variables.Verbose)); private static Lazy<bool> s_verboseToStdErr = new(() => Env.GetEnvironmentVariableAsBool(Variables.VerboseToStdErr)); private static Lazy<bool> s_output = new(() => Env.GetEnvironmentVariableAsBool(Variables.Output, true)); private static Lazy<bool> s_error = new(() => Env.GetEnvironmentVariableAsBool(Variables.Error, true)); private static readonly Lazy<bool> s_ansiPassThru = new(() => Env.GetEnvironmentVariableAsBool(Variables.AnsiPassThru)); /// <summary> /// True if the verbose output is enabled. /// </summary> public static bool IsVerbose => s_verbose.Value; /// <summary> /// True if verbose output should go to stderr instead of stdout. /// </summary> public static bool IsVerboseToStdErr => s_verboseToStdErr.Value; public static bool ShouldPassAnsiCodesThrough => s_ansiPassThru.Value; /// <summary> /// Sets or resets the verbose output. /// </summary> /// <remarks> /// After calling, consider calling <see cref="Reporter.Reset()"/> to apply change to reporter. /// </remarks> public static void SetVerbose(bool value) { s_verbose = new Lazy<bool>(() => value); } /// <summary> /// Sets or resets the verbose-to-stderr output. /// </summary> /// <remarks> /// After calling, consider calling <see cref="Reporter.Reset()"/> to apply change to reporter. /// </remarks> public static void SetVerboseToStdErr(bool value) { s_verboseToStdErr = new Lazy<bool>(() => value); } /// <summary> /// Sets or resets the normal output. /// </summary> /// <remarks> /// After calling, consider calling <see cref="Reporter.Reset()"/> to apply change to reporter. /// </remarks> public static void SetOutput(bool value) { s_output = new Lazy<bool>(() => value); } /// <summary> /// Sets or resets the error output. /// </summary> /// <remarks> /// After calling, consider calling <see cref="Reporter.Reset()"/> to apply change to reporter. /// </remarks> public static void SetError(bool value) { s_error = new Lazy<bool>(() => value); } /// <summary> /// True if normal output is enabled. /// </summary> internal static bool OutputEnabled => s_output.Value; /// <summary> /// True if error output is enabled. /// </summary> internal static bool ErrorEnabled => s_error.Value; }