Console.SetOut для StreamWriter, постоянно писать в текстовый файл - PullRequest
6 голосов
/ 24 февраля 2010

Я использую метод Console.SetOut для записи всех моих Console.Out.WriteLines в файл, и это работает. Единственная проблема заключается в том, что он записывает все в текстовый файл только тогда, когда я закрываю свое приложение, а не пишу каждый раз, когда происходит Console.Out.WriteLine. Любые идеи о том, как я могу это реализовать?

Как мне это сделать: Перед применением. Выполнить ();

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

После применения. Выполнить ():

writer.Dispose();

Спасибо.

Ответы [ 4 ]

13 голосов
/ 24 февраля 2010

StreamWriter имеет свойство AutoFlush. Если установлено значение true, вы должны получить нужный результат.

11 голосов
/ 24 февраля 2010

StreamWriter будет буферизовать его содержимое по умолчанию. Если вы хотите очистить буфер, вы должны вызвать метод Flush:

Очищает все буферы для текущего устройства записи и вызывает запись любых буферизованных данных в базовый поток.

1 голос
/ 24 февраля 2010

Если вы не хотите каждый раз вызывать flush вручную, вы можете рассмотреть возможность реализации собственного объекта, производного от TextWriter, чтобы сделать это за вас.

0 голосов
/ 02 ноября 2012

Чтобы очистить буфер, вы можете сделать writer.Close ();

...