1

nlog.configで非同期ログをオンにしている場合、ThreadIDキャプチャされる場所はどこですか?

コンテキスト:.NET、Rx、およびTPLデータフロー(別名TDP)を使用してグリーンフィールドプロジェクトを開始しています。非同期操作とバックグラウンドワークキューを多用します。

ManagedThreadId目標:ロギングで、作業が実行されている場所と、作業が並行して実行されているときをキャプチャしたいと思います(デフォルトのスケジューラーがThreadPoolではないRxでは間違いがちです)。nlog.configで非同期ログをオンにしている場合、ThreadIDはどこでキャプチャされますか?

懸念事項:NLogのコアLogEntryクラスにThreadIDが表示されません。たとえば、cbley/NLog.SignalRのブラウザには送信されません。nlog.configで非同期ログをオンにしている場合、ThreadIDキャプチャされる場所はどこですか?ログエントリが(NLogバックグラウンドスレッドで)レンダリングされるまでキャプチャされない場合、それはThreadId私には役に立たないので、より適切なログライブラリを見つける必要があります。

4

1 に答える 1

2

NLogはthreadidを正しくキャプチャします。

NLogは、呼び出し元のスレッドの外部で使用/レンダリングできる派生クラスを使用[ThreadAgnostic]します。その属性がないため、非同期遷移後まで遅延させることはできませんLayoutRenderThreadIdLayoutRender

于 2013-01-29T23:31:29.787 に答える