xamlx が 1 つしかない非常に単純なWCF ワークフロー サービス プロジェクトがあります。XAMLX も非常に単純で、1 つの receive receive アクティビティと、別の xaml ワークフローを呼び出します。
xamlx サービスは次のとおりです。
私の質問は、xamlx サービスで Log4net を構成して、後続のワークフローによって生成されたすべての未処理のエラーをイベント ログに記録できるようにするにはどうすればよいですか?
xamlx が 1 つしかない非常に単純なWCF ワークフロー サービス プロジェクトがあります。XAMLX も非常に単純で、1 つの receive receive アクティビティと、別の xaml ワークフローを呼び出します。
xamlx サービスは次のとおりです。
私の質問は、xamlx サービスで Log4net を構成して、後続のワークフローによって生成されたすべての未処理のエラーをイベント ログに記録できるようにするにはどうすればよいですか?
Workflow Tracking and Tracingをご覧になることをお勧めします。主に、ログに記録できるいくつかのTrackingRecordsがある独自のTrackingParticipantを作成する方法について説明します。カスタム アクティビティによって発行される独自のCustomTrackingRecordを作成することもできます。
実際には、 log4netを使用せずに、おそらく必要な仕事を行うEtwTrackingParticipantを既に利用できます。構成方法とイベント ビューアーでのイベント データへのアクセス方法については、こちらを参照してください。
未処理のエラーをすべて自動的にログに記録する方法が見つからなかったためです。Try/Catch アクティビティを追加し、いくつかのコード アクティビティを追加してエラーをログに記録することで、問題を解決しました。
ロガーを構成するために、これ[assembly: log4net.Config.XmlConfigurator(Watch = true)]
を assembly.cs に追加し、2 つのコード アクティビティを作成しました。
ロガーを取得するための 1 つ:
ILog logger = LogManager.GetLogger("LogName");
return logger;
エラーをログに記録する 2 番目:
logger.Get(context).Error(ex.Get(context));
私の更新された xamlx は以下のようになります。
誰かが他に良いオプションを持っている場合は、私に知らせてください。ありがとう