Ciò richiede un framework di terze parti, vale a dire Serilog , ma ho comunque trovato un'esperienza molto fluida con l'output in un posto in cui posso vederlo.
Devi prima installare il sink di traccia di Serilog . Una volta installato, è necessario impostare il logger in questo modo:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Puoi impostare un livello minimo diverso o impostarlo su un valore di configurazione o su una delle normali funzionalità di Serilog. Puoi anche impostare il Trace
logger su un livello specifico per sovrascrivere le configurazioni, o comunque tu voglia farlo.)
Quindi registri i messaggi normalmente e vengono visualizzati nella finestra Output:
Logger.Information("Did stuff!");
Questo non sembra un grosso problema, quindi lasciatemi spiegare alcuni vantaggi aggiuntivi. Il più grande per me è stato che potevo accedere contemporaneamente alla finestra Output e alla console :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Questo mi ha dato una grande flessibilità in termini di come ho consumato l'output, senza dover duplicare tutte le mie chiamate Console.Write
con Debug.Write
. Quando scrivevo il codice, potevo eseguire il mio strumento da riga di comando in Visual Studio senza timore di perdere il mio output quando usciva. Quando l'ho distribuito e avevo bisogno di eseguire il debug di qualcosa (e non avevo Visual Studio disponibile), l'output della console era prontamente disponibile per il mio consumo. Gli stessi messaggi possono anche essere registrati in un file (o qualsiasi altro tipo di sink) quando è in esecuzione come attività pianificata.
La linea di fondo è che l'uso di Serilog per fare ciò ha reso davvero facile scaricare i messaggi su una moltitudine di destinazioni, assicurando che potessi sempre accedere prontamente all'output indipendentemente da come l'ho eseguito.
Richiede anche una configurazione e un codice molto minimi.
Debug.WriteLine()