Это требует стороннего фреймворка, а именно Serilog , но я тем не менее нашел, что это очень плавный опыт с получением результата в каком-то месте, где я его вижу.
Сначала вам нужно установить раковину Serilog's Trace . После установки вам необходимо настроить регистратор следующим образом:
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 для этого действительно облегчило передачу сообщений во множество мест назначения, гарантируя, что я всегда мог легко получить доступ к выводу независимо от того, как я его запустил.
Это также требует минимальной настройки и кода.
Debug.WriteLine()