これにはサードパーティのフレームワーク、つまりSerilogが必要ですが、それでも、出力を私が見ることができる場所に取得することは非常にスムーズな経験であることがわかりました。
最初にSerilogの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()