<PackageReference Include="NUnit" Version="3.0.0-alpha" />

InternalTraceWriter

InternalTraceWriter can write to a separate file per domain and process using it or feed output to another TextWriter;
using System.IO; using System.Text; namespace NUnit.Framework.Internal { public class InternalTraceWriter : TextWriter { private TextWriter writer; private object myLock = new object(); public override Encoding Encoding => writer.Encoding; public InternalTraceWriter(string logPath) { writer = new StreamWriter(new FileStream(logPath, FileMode.Append, FileAccess.Write, FileShare.Write)) { AutoFlush = true }; } public InternalTraceWriter(TextWriter writer) { this.writer = writer; } public override void Write(char value) { lock (myLock) { writer.Write(value); } } public override void WriteLine(string value) { lock (myLock) { writer.WriteLine(value); } } } }