質問

C#.netを使用して、1日1回実行する必要があるアプリケーションを開発する必要があります。最大1分間しか実行されないため、Windowsサービスの開発はやり過ぎであり、スケジュールされたタスクが適切な方法です。

ただし、アプリケーションがどのように結果を伝えることができるかについて、いくつか質問があります:

  • タスクが失敗したことをタスクスケジューラに示す方法これはプログラムの終了コード経由ですか?
  • 出力情報を記録するにはどうすればよいですか?コンソール出力は自動的にキャプチャされますか、イベントビューアに明示的に書き込む必要がありますか?
役に立ちましたか?

解決

質問への回答-

  1. 未チェックの例外をスローしたためにタスクが失敗した場合、Shedled Taskビューアに 0xe0434f4d のような値を持つ「最後の結果」が表示されます。または、スケジュールされたタスクビューアーの[最終結果]列にも表示される終了コードを返す場合。

  2. コンソールへの書き込み。 Console.WriteLine(" blah"); はどこにも表示されません。イベントログまたはログファイルに書き込む必要があります。

他のヒント

ログファイルの方法を使用する場合、 Console.WriteLine(" blah"); を引き続き使用できます。トリックは、標準の Out および Error ストリームをリダイレクトすることです:

        StreamWriter mylog = new StreamWriter("mylog.log");
        Console.SetOut(mylog);
        Console.SetError(mylog);

ログファイルに最新の情報が含まれていることを確認するには、バッファを頻繁にフラッシュする必要もあります。

            Console.Out.Flush();

これは手っ取り早くて汚いので、本当に Windowsイベントログまたはを使用する必要があります。 log4net

スケジューラはプロセスを開始するだけです。イベントログまたは別のログシステムを使用して、後で参照する必要がある情報を記録できます。

Log4net は、非常に優れた完全なロギングフレームワークです。強くお勧めできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top