Console.SetOut для StreamWriter, постоянно писать в текстовый файл
Я использую метод Console.SetOut, чтобы записать все мои Console.Out.WriteLines в файл, и это работает. Единственная проблема заключается в том, что он записывает все в текстовый файл только тогда, когда я закрываю свое приложение, вместо того, чтобы писать, когда происходит Console.Out.WriteLine. Любые идеи о том, как я могу это реализовать?
Как я это делаю: перед Application.Run();
FileStream writerOutput = new FileStream("Logging_Admin.txt", FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(writerOutput);
Console.SetOut(writer);
После Application.Run():
writer.Dispose();
Благодарю.
4 ответа
StreamWriter
по умолчанию буферизует его содержимое. Если вы хотите очистить буфер, вы должны вызвать Flush
метод:
Очищает все буферы для текущего устройства записи и вызывает запись любых буферизованных данных в базовый поток.
StreamWriter имеет свойство AutoFlush. Если установлено значение true, вы должны получить нужный результат.
Если вы не хотите каждый раз вызывать flush вручную, вы можете рассмотреть возможность реализации собственного объекта, производного от TextWriter, чтобы сделать это за вас.