tool/TeamCity.Docker/Logger.cs (54 lines of code) (raw):
namespace TeamCity.Docker
{
using System;
using IoC;
internal class Logger: ILogger
{
[NotNull] private readonly IOptions _options;
private readonly ILogger _logger;
public Logger(
[NotNull] IOptions options,
[NotNull] IEnvironment environment,
[NotNull] ILogger consoleLogger,
[NotNull] ILogger teamCityLogger)
{
if (environment == null)
{
throw new ArgumentNullException(nameof(environment));
}
if (consoleLogger == null)
{
throw new ArgumentNullException(nameof(consoleLogger));
}
if (teamCityLogger == null)
{
throw new ArgumentNullException(nameof(teamCityLogger));
}
_options = options;
_logger = environment.HasEnvironmentVariable("TEAMCITY_VERSION") ? teamCityLogger : consoleLogger;
}
public void Log(string text, Result result = Result.Success)
{
if (text == null)
{
throw new ArgumentNullException(nameof(text));
}
_logger.Log(text, result);
}
public void Details(string text, Result result = Result.Success)
{
if (_options.VerboseMode)
{
Log(text, result);
}
}
public IDisposable CreateBlock(string blockName)
{
if (blockName == null)
{
throw new ArgumentNullException(nameof(blockName));
}
return _logger.CreateBlock(blockName);
}
}
}