Вы можете присоединить консоль и файл журнала в качестве прослушивателей Trace и заменить все способы записи консоли на Trace:
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.Listeners.Add(new DefaultTraceListener{LogFileName="C:\temp\myOutput.txt"});
...
Trace.Flush();
Trace.Listeners.Clear();
Понимать, что Trace, в отличие от консоли, не может быть прочитана, поэтому еслиВы когда-либо используете Console.ReadLine и хотите записать ввод пользователя, вам нужно «передать» его обратно слушателям трассировки.
Если вы хотите использовать немного больше SOLID, вы можете настроитьIOutputWriter интерфейс, затем реализовать три класса;тот, который пишет в консоль, тот, который пишет в файл, и третий, который имеет коллекцию других IOutputWriters и направляет любой вызов его методов всем подключенным IOutputWriters.При этом используются шаблоны Composite и Adapter для нормализации интерфейса между вашей программой и всем, что ее слушает.Это обходит встроенную функциональность Trace / Debug, но если вы уже используете это для другого уровня обмена сообщениями, или вам нужно, чтобы ваш обмен сообщениями работал немного иначе, чем по умолчанию, предоставляемый Trace, то это альтернативный переход.