Зеркальное отражение консольного вывода в файл

Вот документы React:

НИКОГДА не мутируйте this.state напрямую, так как вызов setState () впоследствии может заменить мутацию, которую вы сделали. Обработайте this.state, как если бы он был неизменным.

setState () не сразу мутирует this.state, но создает ожидающий переход состояния. Доступ к this.state после вызова этого метода может потенциально вернуть существующее значение.

Нет гарантии синхронной работы вызовов с setState, и вызовы могут быть собраны для повышения производительности. setState () всегда вызывает повторную визуализацию, если логика условного воспроизведения не реализована в shouldComponentUpdate ().

Если используются изменяемые объекты и логика не может быть реализована в shouldComponentUpdate (), вызов только setState () когда новое состояние отличается от предыдущего состояния, избежит ненужных повторных передач.

86
задан xyz 7 January 2009 в 14:13
поделиться

5 ответов

Это может быть некоторым большим количеством работы, но я пошел бы наоборот.

Инстанцируют TraceListener для консоли и один для файла журнала; после этого используйте Trace.Write операторы в Вашем коде вместо Console.Write. Становится легче впоследствии удалить журнал или консольный вывод, или присоединить другой механизм входа.

static void Main(string[] args)
{
    Trace.Listeners.Clear();

    TextWriterTraceListener twtl = new TextWriterTraceListener(Path.Combine(Path.GetTempPath(), AppDomain.CurrentDomain.FriendlyName));
    twtl.Name = "TextLogger";
    twtl.TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime;

    ConsoleTraceListener ctl = new ConsoleTraceListener(false);
    ctl.TraceOutputOptions = TraceOptions.DateTime;

    Trace.Listeners.Add(twtl);
    Trace.Listeners.Add(ctl);
    Trace.AutoFlush = true;

    Trace.WriteLine("The first line to be in the logfile and on the console.");
}

, Насколько я могу вспомнить, можно определить слушателей в конфигурации приложения, позволяющей активировать или деактивировать вход, не касаясь сборки.

113
ответ дан Pooven 5 November 2019 в 15:39
поделиться

Выезд log4net. С log4net можно настроить консоль и файл appenders, что желание может произвести сообщения журнала к обоим местам с единственным оператором журнала.

13
ответ дан tvanfosson 5 November 2019 в 15:39
поделиться

Вы могли разделить класс TextWriter на подклассы, и затем присвоить его экземпляр Консоли. С помощью Консоль. Метод SetOut - который в особенности делает то же самое как передачу той же строки к обоим методам в методе журнала.

Иначе мог бы, объявляя Ваш собственный Консольный класс и использовать оператор использования для различения классы:

using Console = My.Very.Own.Little.Console;

Для доступа к стандартной консоли Вам тогда было бы нужно:

global::Console.Whatever
8
ответ дан arul 5 November 2019 в 15:39
поделиться

Вы не можете только перенаправить вывод в файл, с помощью эти > команда?

c:\>Console.exe > c:/temp/output.txt

, Если необходимо зеркально отразить, можно попробовать, находят win32 версию tee, который разделяет вывод в файл.

9
ответ дан xtofl 5 November 2019 в 15:39
поделиться

Log4net может сделать это для Вас. Вы только записали бы что-то вроде этого:

logger.info("Message");

конфигурация А определит, перейдет ли печать к консоли, файлу или обоим.

6
ответ дан kgiannakakis 5 November 2019 в 15:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: