Bu, üçüncü taraf bir çerçeve, yani Serilog gerektirir , ancak yine de görebildiğim bir yere çıktı alma konusunda çok düzgün bir deneyim buldum.
Önce Serilog'un Trace lavabosunu kurmanız gerekir . Kurulduktan sonra, kaydediciyi şu şekilde ayarlamanız gerekir:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Farklı bir minimum seviye ayarlayabilir veya bir yapılandırma değerine veya normal Serilog işlevlerinden herhangi birine ayarlayabilirsiniz Trace
.
Sonra iletileri normal şekilde günlüğe kaydedersiniz ve bunlar Çıktı pencerenizde görünür:
Logger.Information("Did stuff!");
Bu o kadar büyük bir şey gibi görünmüyor, bu yüzden bazı ek avantajları açıklayayım. Benim için en büyüğü , hem Çıktı penceresine hem de konsola aynı anda giriş yapabilmemdi :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Bu, tüm aramalarıma çoğaltmak zorunda kalmadan, bana çıktı tüketilen nasıl açısından büyük bir esneklik verdi Console.Write
ile Debug.Write
. Kodu yazarken, çıkış sırasında çıkışımı kaybetme korkusu olmadan Visual Studio'da komut satırı aracımı çalıştırabilirim. Dağıttığımda ve bir şeyde hata ayıklamak istediğimde (ve Visual Studio'yu kullanamadığımda), konsol çıktısı tüketimim için hazırdı. Aynı iletiler, zamanlanmış görev olarak çalışırken bir dosyaya (veya başka bir lavaboya) da kaydedilebilir.
Sonuç olarak Serilog'un bunu yapmak için mesajları çok sayıda hedefe dökmeyi gerçekten kolaylaştırarak, nasıl çalıştırdığımdan bağımsız olarak çıktıya her zaman kolayca erişebilmemi sağladım.
Ayrıca çok az kurulum ve kod gerektirir.
Debug.WriteLine()