diff --git a/src/Logging/SimpleConsoleLogger.cs b/src/Logging/SimpleConsoleLogger.cs index 987d164c4c..89e3497509 100644 --- a/src/Logging/SimpleConsoleLogger.cs +++ b/src/Logging/SimpleConsoleLogger.cs @@ -12,6 +12,7 @@ namespace Microsoft.CodeAnalysis.Tools.Logging { internal class SimpleConsoleLogger : ILogger { + private readonly IConsole _console; private readonly ITerminal _terminal; private readonly LogLevel _logLevel; @@ -29,6 +30,7 @@ internal class SimpleConsoleLogger : ILogger public SimpleConsoleLogger(IConsole console, LogLevel logLevel) { _terminal = console.GetTerminal(); + _console = console; _logLevel = logLevel; } @@ -39,13 +41,15 @@ public void Log(LogLevel logLevel, EventId eventId, TState state, Except return; } - var messageColor = _logLevelColorMap[logLevel]; - _terminal.ForegroundColor = messageColor; - var message = formatter(state, exception); - _terminal.Out.WriteLine($" {message}"); - - _terminal.ResetColor(); + if (_terminal is null) + { + LogToConsole(message); + } + else + { + LogToTerminal(message, logLevel); + } } public bool IsEnabled(LogLevel logLevel) @@ -57,5 +61,18 @@ public IDisposable BeginScope(TState state) { return NullScope.Instance; } + + void LogToTerminal(string message, LogLevel logLevel) + { + var messageColor = _logLevelColorMap[logLevel]; + _terminal.ForegroundColor = messageColor; + _terminal.Out.WriteLine($" {message}"); + _terminal.ResetColor(); + } + + void LogToConsole(string message) + { + _console.Out.WriteLine($" {message}"); + } } }