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.

Was it helpful?

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();

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top