Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Записать в файл то, что процедура ввыводит на консоль

#c_sharp


У меня вызывается метод.    

public void doSomethingElse()
{
    Debug.WriteLine(color);
}


Сам метод выводит на консоль строку. Как мне после вывода строки на консоль, выведенную
информацию записать в файл. Изначально переменную не могу записать в файл так как выполняю
юнит тесты.
    


Ответы

Ответ 1



У механизмов отладочного вывода (Debug.WriteLine) и трассировки (Trace.WriteLine) есть стандартные способы перенаправления - Trace Listeners. По умолчанию вывод Debug.WriteLine уходит вникуда, т.к. ни одного Trace Listener-а для него не задано. При отладке сам отладчик (студия) добавляет Trace Listener, который перенаправляет вывод в окно отладчика (Output), а вовсе не на консоль. Так что вам не надо перенаправлять вывод на консоль в файл. Вам нужно просто добавить стандартный TextWriterTraceListener в Debug.Listeners и вы получите копию отладочного вывода в файле. Вот минимальный код: using System.Diagnostics; namespace ConsoleApp3 { class Program { static void Main(string[] args) { // в инициализации тестов, один раз Debug.Listeners.Add(new TextWriterTraceListener("log.txt")); Debug.WriteLine("test"); // после прогона тестов // чтобы записать буфер на диск и не потерять хвост лога Debug.Flush(); } } } При трассировке (использовании Trace.WriteLine) listener-ы можно задавать прямо в конфиге, это достаточно подробно расписано в howto в MSDN: Trace.TraceInformation("Test message."); // You must close or flush the trace to empty the output buffer. Trace.Flush();

Комментариев нет:

Отправить комментарий