Search code examples
c#loggingstreamwriterconsole.out.writelineconsole.setout

Console.SetOut to StreamWriter, write to textfile constantly


I'm using the Console.SetOut method to write all my Console.Out.WriteLines to a file, and this works. The only problem is that it only writes everything to the textfile when I close my application instead of it writing whenever a Console.Out.WriteLine happens. Any ideas on how I can realise this?

How I do it: Before Application.Run();

FileStream writerOutput = new FileStream("Logging_Admin.txt", FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(writerOutput);
Console.SetOut(writer);

After Application.Run():

writer.Dispose();

Thanks.


Solution

  • The StreamWriter will buffer its contents by default. If you want to flush the buffer you must call the Flush method:

    Clears all buffers for the current writer and causes any buffered data to be written to the underlying stream.