Console.SetOut to StreamWriter, write to textfile constantly
-
22-09-2019 - |
Question
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.
OTHER TIPS
StreamWriter has an AutoFlush property. When set to true, you should get the result you need.
If you don't want to call flush every time manually, you might want to consider implementing your own TextWriter-derived object to do this for you.
To flush the buffer, you can do writer.Close();