Windows服务不记录到事件日志

问题描述:

我有一个Windows服务无法在某些情况下启动。当它无法启动事件序列时,表明服务中的.NET代码可能已运行,但不会显示事件日志消息。Windows服务不记录到事件日志

服务正常启动时会显示事件日志消息。

事件日志如何工作?那么Windows服务经理如何工作?

如果某个服务超时(发生了什么),那么与该服务关联的事件日志消息可能会被丢弃?

如果一个服务超时是否意味着它已经调用了我的.NET代码?我的启动方法调用后台线程,所以我不明白为什么服务会超时。

不真的加起来。

事件日志需要显式的日志记录操作。从启动和关闭中看到的是由操作系统的服务控制管理器创建的。要获得超出该范围的任何日志记录,您需要明确使用System.Diagnostics.EventLog类。

编辑:如果你这样做,仍然没有看到消息,它要么意味着日志操作不执行,或者失败了,或许还有一个Win32Exception。

+0

是的,这就是我正在做的/寻找的。见上面的评论。 – peter 2009-09-24 23:09:36

+0

@peter:啊,好的。看我的编辑。 – 2009-09-24 23:17:00

+0

没错。好点子。可能发生了异常,但在日志记录代码中发生异常时总是非常困难,您无法准确记录它! – peter 2009-09-25 02:36:12

这真的取决于你的代码在做什么。为什么不使用Debugger.Launch()进行调试,或将开始代码包装在try ... catch中以捕获错误消息。这个服务不太可能会记录很多事件日志......这是开发人员的工作:)

+0

谢谢,但我指的是写入事件日志的代码。如果我们的代码运行,它会写入事件日志,这就是我正在寻找的。我想我问的是,如果事件日志中没有消息,这绝对意味着它没有得到我们的代码? – peter 2009-09-24 23:07:02

+0

我有怀疑者,你看到我们的代码正在运行,因为服务失败的原因。正在记录安全错误,说明Windows防火墙无法向用户询问我们的应用程序。我们的应用程序正在公开WCF,所以这将暗示我们的代码正在运行。 – peter 2009-09-24 23:08:26

+0

不,这可能意味着写入事件日志会抛出异常!是的,从你的说法来看,它听起来像是打了你的代码..更多的调试/调查可能需要,但要确定.. – 2009-09-24 23:18:24