我最近在部署Windows服務期間遇到問題。四臺電腦沒有造成任何問題,但第五次嘗試啓動服務失敗的原因是異常。異常堆棧跟蹤寫入到事件日誌,所以我雖然它應該很容易找出原因:寫入事件日誌條目的最佳方式是什麼?
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
方法中的事件日誌狀態,或者你有更好的建議嗎?
寫入事件日誌不是「自己寫日誌代碼」。 – MusiGenesis 2008-11-24 10:58:57
@MusiGenesis:請解釋一下。對於我來說,編寫日誌特定的異常處理是編寫代碼,例如Log4Net或NLog已經做得更好。我沒有理由寫另一個日誌框架。 – Mendelt 2008-11-24 11:10:49