例外が発生したときにメッセージの内容を記録する方法はありますか?
さまざまなログ拡張機能を調べましたが、CorrelationId をログに記録しているだけです。また、メッセージ内容はご利用いただけません。
MessageContext には CurrentMessge プロパティがありますが、ロガーが例外を書き込む時点では使用できません。
メッセージの内容をログに記録できる PoisonMessage イベントを処理しようとしました。
public static void OnPoisonMessage(IBus bus, ReceivedTransportMessage receivedTransportMessage, Rebus.Bus.PoisonMessageInfo poisonMessageInfo) {
var message = new JsonMessageSerializer().Deserialize(receivedTransportMessage);
Log.Error("{@messageType} failed {@message}", message.Messages[0].GetType(), message);
}
これはうまく機能しますが、ログに2つのエラーがあり、1つはハンドラーからのもので、もう1つはロガーからのものです。
この要件を処理するためのより良い方法があるかどうか疑問に思っています。