У меня вызывается метод.
public void doSomethingElse()
{
Debug.WriteLine(color);
}
Сам метод выводит на консоль строку. Как мне после вывода строки на консоль, выведенную информацию записать в файл. Изначально переменную не могу записать в файл так как выполняю юнит тесты.
Ответ
У механизмов отладочного вывода (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();
Комментариев нет:
Отправить комментарий