diff --git a/src/BenchmarkDotNet.TestAdapter/BenchmarkExecutor.cs b/src/BenchmarkDotNet.TestAdapter/BenchmarkExecutor.cs index f1cd64f34e..dc3e7ee832 100644 --- a/src/BenchmarkDotNet.TestAdapter/BenchmarkExecutor.cs +++ b/src/BenchmarkDotNet.TestAdapter/BenchmarkExecutor.cs @@ -1,4 +1,5 @@ using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Running; using BenchmarkDotNet.TestAdapter.Remoting; using Microsoft.VisualStudio.TestPlatform.ObjectModel; @@ -67,7 +68,10 @@ public void RunBenchmarks(string assemblyPath, TestExecutionRecorderWrapper reco .Select(b => new BenchmarkRunInfo( b.BenchmarksCases, b.Type, - b.Config.AddEventProcessor(eventProcessor).AddLogger(logger).CreateImmutableConfig())) + b.Config.AddEventProcessor(eventProcessor) + .AddLogger(logger) + .RemoveLoggersOfType() // Console logs are also outputted by VSTestLogger. + .CreateImmutableConfig())) .ToArray(); // Run all the benchmarks, and ensure that any tests that don't have a result yet are sent. diff --git a/src/BenchmarkDotNet/Configs/ManualConfig.cs b/src/BenchmarkDotNet/Configs/ManualConfig.cs index cdfb64a234..4ececd28f1 100644 --- a/src/BenchmarkDotNet/Configs/ManualConfig.cs +++ b/src/BenchmarkDotNet/Configs/ManualConfig.cs @@ -327,6 +327,12 @@ public static ManualConfig Union(IConfig globalConfig, IConfig localConfig) return manualConfig; } + internal ManualConfig RemoveLoggersOfType() + { + loggers.RemoveAll(logger => logger is T); + return this; + } + internal void RemoveAllJobs() => jobs.Clear(); internal void RemoveAllDiagnosers() => diagnosers.Clear();