I call a method, say, FizzBuzz()
, over which I have no control. This method outputs a bunch of stuff to the Console using Console.WriteLine
.
Is it possible for me to intercept the output being generated by the FizzBuzz
method? Note that my application is a Console app itself.
Press CTRL + F5 to see your output. This will wait the console screen until you press any key.
To print a message to the console, we use the WriteLine method of the Console class. The class represents the standard input, output, and error streams for console applications. Note that Console class is part of the System namespace. This line was the reason to import the namespace with the using System; statement.
Yes, very much 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());
Later on if you want to stop intercepting the console output, use modification below:
var stdOut = Console.Out; // Above interceptor code here.. Console.SetOut(stdOut); // Now all output start going back to console window
Or the OpenStandardOutput does the same without the need to save the standard stream first:
// Above interceptor code here.. var standardOutput = new StreamWriter(Console.OpenStandardOutput()); standardOutput.AutoFlush = true; Console.SetOut(standardOutput); // Now all output starts flowing back to console
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With