我最近在部署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);
}
Run Code Online (Sandbox Code Playgroud)
但是,唉,没有任何信息写入日志.我终于将它追溯到正在编写的第一个日志条目.它引发了一个异常,因为应用程序事件日志已满,包含最近的条目,并且配置为仅覆盖超过7天的条目.
考虑到我无法更改应用程序事件日志的配置,写入事件日志的最佳做法是什么?
我应该总是放入EventLog.WriteEntry一个try块,如果是,我应该如何处理异常(将它写入事件日志可能是一个坏主意),我应该检查我的OnStart方法中的事件日志状态,还是你有更好的建议?