我最近在部署 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
方法中检查事件日志状态,还是你有更好的建议?