protected LoggingTestBase(ITestOutputHelper xUnitOutputHelper)
        {
            TestOutputHelper = xUnitOutputHelper;
            CurrentXunitTest = GetCurrentXunitTest(xUnitOutputHelper);

            var lineWriters = new List <ILineWriter>();

            var testId = TestIdCounter.Increment();

            var config = TestingConfig.ReadFromFromEnvVars(xUnitOutputHelper);

            if (config.LogToSysDiagTraceEnabled)
            {
                lineWriters.Add(new SystemDiagnosticsTraceLineWriter(string.Format(config.LogToSysDiagTraceLinePrefix, testId)));
            }

            if (config.LogToConsoleEnabled)
            {
                lineWriters.Add(new FlushingTextWriterToLineWriterAdaptor(Console.Out, string.Format(config.LogToConsoleLinePrefix, testId)));
            }

            var writerForStartFinish = lineWriters.ToArray();

            if (config.LogToXunitEnabled)
            {
                lineWriters.Add(new XunitOutputToLineWriterAdaptor(xUnitOutputHelper, string.Format(config.LogToXunitLinePrefix, testId)));
                if (!TestingConfig.IsRunningInIde)
                {
                    writerForStartFinish = lineWriters.ToArray();
                }
            }

            _loggerForStartFinish = new LineWriterToLoggerAdaptor(new SplittingLineWriter(writerForStartFinish), config.LogLevel);

            LogProgress("Starting test: {UnitTestDisplayName}...");

            LoggerBase = new LineWriterToLoggerAdaptor(new SplittingLineWriter(lineWriters.ToArray()), config.LogLevel);
        }