Oui, tout à fait possible:
var consoleOut = new StringWriter();
Console.SetOut(consoleOut);
Console.WriteLine("This is intercepted."); // This is not written to console
File.WriteAllText("ConsoleOutput.txt", consoleOut.ToString());
Plus tard, si vous voulez arrêter l'interception de la sortie de la console, de modification de l'utilisation ci-dessous:
var stdOut = Console.Out;
// Above interceptor code here..
Console.SetOut(stdOut); // Now all output start going back to console window
Ou la OpenStandardOutput fait la même chose sans avoir besoin d'enregistrer le flux standard d'abord:
// Above interceptor code here..
var standardOutput = new StreamWriter(Console.OpenStandardOutput());
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput); // Now all output starts flowing back to console