Как запустить экран консоли в текстовый файл?

Возможный дубликат:
Зеркальное отображение вывода консоли в файл

У меня консольное приложение на С#, и я хочу войти в текстовый файл, каждый текст появляется на экране. Как это сделать?

К сожалению, эта тема закрыта, несмотря на мой комментарий о выводной копии Mirroring console в файл. Принятое сообщение как ответ этой нитью НЕ ПРАВИЛЬНО. Так почему бы не задать вопрос еще раз? Я использую консоль в интерактивном режиме и хочу получить копию всего текста на консоли в текстовом файле. SOS

Ответ 1

C:\>yourconsoleapp.exe > yourtextfile.txt

edit: Предполагается, что ваше консольное приложение не требует ввода пользователем.

Ответ 2

Замените все ссылки на класс Console классом System.Diagnostics.Trace. Вы можете добавить ConsoleTraceListener и TextWriterTraceListener, а затем все, что вы выведете на консоль, окажется в обоих местах.

Ответ 3

Вы можете использовать Console.SetOut для перенаправления вывода в файл, но затем вы также не сможете выводить на консоль, кроме вы использовали TextWriter, который транслировался на оба.

Вы можете попробовать System.Diagnostics.Trace, а затем добавить слушателей как к консоли, так и к файлу.

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="configConsoleListener"
             type="System.Diagnostics.ConsoleTraceListener" />
        <add name="fileLogger" 
             type="System.Diagnostics.TextWriterTraceListener" 
             initializeData="LogFile.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
 </configuration>

Ответ 4

Это может быть слишком упрощенным, но в командной строке, если вы это сделаете:

C:\>MyApplication >> output.txt

Это будет записывать все выходные данные из данного приложения в файл output.txt

Если вам действительно не нужно программное решение, это может сделать трюк.

Ответ 5

Простой результат поиска Google: здесь

Извините, я больше не программирую С#, но я проверил код, и это имеет смысл в этом подходе:)

Ответ 6

Используйте log4j.

  • Перейдите на страницу log4j и загрузите dll.
  • Ссылка dll в вашем проекте.
  • Добавьте это в начало вашего app.config
<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="log-file.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] -%message%newline" />
    </layout>
</appender>


<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] -%message%newline" />
    </layout>
</appender>
  • Поместите это как член любого класса, к которому вы хотите войти:

    private static readonly ILog log = LogManager.GetLogger(typeof (Foo));

  • Вставьте строку, подобную этой, для регистрации:

log.Debug( "Привет, мир!" );