最近、Windows サービスの展開中に問題が発生しました。4 台のコンピューターでは問題は発生しませんでしたが、5 台目のコンピューターではサービスを開始しようとしても例外が原因で失敗しました。例外スタック トレースはイベント ログに書き込まれるため、原因を簡単に特定できるはずですが、
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("Starting service", EventLogEntryType.Information);
try
{
//...
base.OnStart(args);
}
catch (Exception ex)
{
EventLog.WriteEntry("Service can not start. Stack trace:" + ex.StackTrace, EventLogEntryType.Error);
Stop();
return;
}
EventLog.WriteEntry("Service started", EventLogEntryType.Information);
}
しかし残念ながら、ログに情報が書き込まれることはありませんでした。最後に、最初に書き込まれたログエントリまでたどりました。アプリケーション イベント ログが最近のエントリでいっぱいで、7 日より古いエントリのみを上書きするように構成されていたため、例外がスローされました。
アプリケーション イベント ログの構成を変更できないことを考えると、イベント ログへの書き込みに関するベスト プラクティスは何ですか?
常にEventLog.WriteEntry
try ブロックを入れる必要がありますか、はいの場合、例外をどのように処理する必要がありますか (イベント ログに書き込むのはおそらく悪い考えです)、メソッドでイベント ログの状態を確認する必要OnStart
がありますか、それとも他に良い方法がありますか?提案?