TeamCity.CSharpInteractive/TeamCityLog.cs (48 lines of code) (raw):

// ReSharper disable ClassNeverInstantiated.Global namespace TeamCity.CSharpInteractive; using HostApi; using JetBrains.TeamCity.ServiceMessages.Write.Special; internal class TeamCityLog<T> : ILog<T> { private readonly ISettings _settings; private readonly ITeamCityWriter _teamCityWriter; private readonly ITeamCityLineFormatter _lineFormatter; private readonly IStatistics _statistics; public TeamCityLog( ISettings settings, ITeamCityWriter teamCityWriter, ITeamCityLineFormatter lineFormatter, IStatistics statistics) { _settings = settings; _teamCityWriter = teamCityWriter; _lineFormatter = lineFormatter; _statistics = statistics; } public void Error(ErrorId id, params Text[] error) { var message = error.ToSimpleString(); _statistics.RegisterError(message); _teamCityWriter.WriteBuildProblem(id.Id, message); } public void Warning(params Text[] warning) { var message = warning.ToSimpleString(); _statistics.RegisterWarning(message); _teamCityWriter.WriteWarning(message); } public void Info(params Text[] message) { if (_settings.VerbosityLevel >= VerbosityLevel.Normal) { _teamCityWriter.WriteMessage(_lineFormatter.Format(message)); } } public void Trace(Func<Text[]> traceMessagesFactory, string origin) { // ReSharper disable once InvertIf if (_settings.VerbosityLevel >= VerbosityLevel.Diagnostic) { origin = string.IsNullOrWhiteSpace(origin) ? typeof(T).Name : origin.Trim(); _teamCityWriter.WriteMessage(_lineFormatter.Format((new Text($"{origin,-40}") + traceMessagesFactory()).WithDefaultColor(Color.Trace))); } } }