TeamCity.CSharpInteractive/NuGetLogger.cs (51 lines of code) (raw):
// ReSharper disable ClassNeverInstantiated.Global
// ReSharper disable SwitchStatementHandlesSomeKnownEnumValuesWithDefault
namespace TeamCity.CSharpInteractive;
using System.Diagnostics.CodeAnalysis;
using NuGet.Common;
[ExcludeFromCodeCoverage]
internal class NuGetLogger : ILogger
{
private readonly ILog<NuGetLogger> _log;
public NuGetLogger(ILog<NuGetLogger> log) => _log = log;
public void LogDebug(string data) => _log.Trace(() => new[] {new Text(data)}, "NuGet");
public void LogVerbose(string data) => _log.Trace(() => new[] {new Text(data)}, "NuGet");
public void LogInformation(string data) => _log.Info(data);
public void LogMinimal(string data) => _log.Info(new[] {new Text(data)});
public void LogWarning(string data) => _log.Warning(data);
public void LogError(string data) => _log.Error(ErrorId.NuGet, data);
public void LogInformationSummary(string data) => _log.Trace(() => new[] {new Text(data)}, "NuGet");
public void Log(LogLevel level, string data)
{
switch (level)
{
case LogLevel.Debug:
LogDebug(data);
break;
case LogLevel.Verbose:
LogVerbose(data);
break;
case LogLevel.Information:
LogInformation(data);
break;
case LogLevel.Minimal:
LogMinimal(data);
break;
case LogLevel.Warning:
LogWarning(data);
break;
case LogLevel.Error:
LogError(data);
break;
}
}
public Task LogAsync(LogLevel level, string data)
{
Log(level, data);
return Task.CompletedTask;
}
public void Log(ILogMessage message) => Log(message.Level, message.Message);
public Task LogAsync(ILogMessage message)
{
Log(message);
return Task.CompletedTask;
}
}