private static ConsoleLogMuxer CreateMuxer(ConsoleLogGlobalSettings settings)
        {
            var consoleFeaturesDetector = new ConsoleFeaturesDetector();
            var consoleWriterFactory    = new ConsoleWriterFactory(consoleFeaturesDetector, settings.OutputBufferSize);
            var consoleWriter           = consoleWriterFactory.CreateWriter();
            var eventsBatcher           = new EventsBatcher(consoleFeaturesDetector);
            var eventsWriter            = new EventsWriter(eventsBatcher, consoleWriter, consoleFeaturesDetector);

            return(new ConsoleLogMuxer(eventsWriter, settings.EventsQueueCapacity, settings.EventsTemporaryBufferCapacity));
        }
 /// <summary>
 /// <para>Create a new console log with the given settings.</para>
 /// <para>An exception will be thrown if the provided <paramref name="settings" /> are invalid.</para>
 /// </summary>
 public SynchronousConsoleLog([NotNull] ConsoleLogSettings settings)
 {
     this.settings           = SettingsValidator.ValidateInstanceSettings(settings);
     consoleFeaturesDetector = new ConsoleFeaturesDetector();
     consoleColorChanger     = new ConsoleColorChanger();
 }