| File: Logging\ConsoleLog.cs | Web Access |
| Project: src\sdk\src\Compatibility\Microsoft.DotNet.ApiSymbolExtensions\Microsoft.DotNet.ApiSymbolExtensions.csproj (Microsoft.DotNet.ApiSymbolExtensions) |
// 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.ApiSymbolExtensions.Logging { /// <summary> /// Class to define common logging abstraction to the console across the APICompat and GenAPI codebases. /// </summary> public class ConsoleLog(MessageImportance messageImportance, string? noWarn = null) : ILog { private readonly HashSet<string> _noWarn = string.IsNullOrEmpty(noWarn) ? [] : new(noWarn!.Split(';'), StringComparer.OrdinalIgnoreCase); /// <inheritdoc /> public bool HasLoggedErrors { get; private set; } /// <inheritdoc /> public virtual void LogError(string message) { HasLoggedErrors = true; Console.Error.WriteLine(message); } /// <inheritdoc /> public virtual void LogError(string code, string message) { HasLoggedErrors = true; Console.Error.WriteLine($"{code}: {message}"); } /// <inheritdoc /> public virtual void LogWarning(string message) => Console.WriteLine(message); /// <inheritdoc /> public virtual void LogWarning(string code, string message) { string messageTextWithCode = $"{code}: {message}"; // Mimic MSBuild which logs suppressed warnings as low importance messages. if (_noWarn.Contains(code)) { LogMessage(MessageImportance.Low, messageTextWithCode); } else { Console.WriteLine(messageTextWithCode); } } /// <inheritdoc /> public virtual void LogMessage(string message) => LogMessage(MessageImportance.Normal, message); /// <inheritdoc /> public virtual void LogMessage(MessageImportance importance, string message) { if (importance > messageImportance) return; Console.WriteLine(message); } } }