Для этого требуется сторонний фреймворк, а именно Serilog , но, тем не менее, я обнаружил, что это очень плавный опыт с получением результата в каком-то месте, которое я вижу.
Сначала необходимо установить Trace sink Serilog . После установки вам необходимо настроить регистратор следующим образом:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Вы можете установить другой минимальный уровень или установить для него значение конфигурации или любую из нормальных функциональных возможностей Serilog. Вы также можете установить регистратор Trace
на определенный уровень, чтобы переопределить настройки, или как вы хотите это сделать .)
Тогда вы просто регистрируете сообщения в обычном режиме, и они отображаются в вашем окне вывода:
Logger.Information("Did stuff!");
Это не так уж важно, поэтому позвольте мне объяснить некоторые дополнительные преимущества. Самым большим для меня было то, что я мог одновременно войти в окно вывода и на консоль :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Это дало мне большую гибкость в отношении того, как я потребляю вывод, без необходимости дублировать все мои вызовы на Console.Write
с Debug.Write
. При написании кода я мог запустить инструмент командной строки в Visual Studio, не боясь потерять вывод при его выходе. Когда я развернул его и мне нужно было что-то отладить (и у меня не было Visual Studio), консольный вывод был легко доступен для моего использования. Те же сообщения также могут быть записаны в файл (или любой другой вид приемника), когда он выполняется как запланированное задание.
Суть в том, что использование Serilog для этого действительно облегчило передачу сообщений во множество мест назначения, гарантируя, что я всегда мог легко получить доступ к выходу независимо от того, как я его запустил.
Также требуется минимальная настройка и код.