Isso requer uma estrutura de terceiros, ou seja, o Serilog , mas mesmo assim achei uma experiência muito tranquila com a obtenção de saída para algum lugar que eu possa ver.
Você primeiro precisa instalar o coletor Trace do Serilog . Depois de instalado, você precisa configurar o logger da seguinte maneira:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Você pode definir um nível mínimo diferente ou defini-lo como um valor de configuração ou qualquer uma das funcionalidades normais do Serilog. Você também pode definir o criador de Trace
logs para um nível específico para substituir as configurações, ou como desejar.)
Então você apenas registra as mensagens normalmente e elas são exibidas na janela Saída:
Logger.Information("Did stuff!");
Isso não parece tão importante, então deixe-me explicar algumas vantagens adicionais. O maior para mim foi o fato de eu poder fazer logon simultaneamente na janela Saída e no console :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Isso me deu uma grande flexibilidade em termos de como eu consumi a saída, sem ter que duplicar todas as minhas chamadas Console.Write
com Debug.Write
. Ao escrever o código, eu poderia executar minha ferramenta de linha de comando no Visual Studio sem medo de perder minha saída quando ela saísse. Quando eu o implantei e precisei depurar algo (e não tinha o Visual Studio disponível), a saída do console estava prontamente disponível para o meu consumo. As mesmas mensagens também podem ser registradas em um arquivo (ou qualquer outro tipo de coletor) quando estiver sendo executado como uma tarefa agendada.
O ponto principal é que o uso do Serilog para isso facilitou o despejo de mensagens para vários destinos, garantindo que eu sempre pudesse acessar prontamente a saída, independentemente de como a executei.
Também requer configuração e código mínimos.
Debug.WriteLine()