更改Windows服务中的事件日志

时间:2014-10-01 15:05:23

标签: c# windows service event-log

我今天正在编写我的第一个Windows服务,并按照非常有用的步骤进行操作: http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx

一切正常。

当我使用该服务时,我开始编辑它以获取我的真实代码,这也很顺利。

但是我发现如果我在以下代码中更改事件日志的名称或来源,那么服务就不会启动。将其更改回演练中使用的名称可以让服务重新开始。

eventLog1 = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("TwitterService"))
{
    System.Diagnostics.EventLog.CreateEventSource(
    "TwitterService", "TwitterLog");
}
eventLog1.Source = "TwitterService";
eventLog1.Log = "TwitterLog";

我只能猜测注册表包含对服务名称和日志文件的某种引用,除非它们匹配,否则不允许它运行,所以我删除了所有引用日志的注册表项。

但是仍然没有运气,在删除注册表项并使用原始名称重新启动服务后,将重新创建密钥。但不是用任何其他名称创建的。

如何更改LogFile名称?不是展示塞,但希望它有一些参考服务。

干杯

编辑:

感谢CodeCaster,我发现了有问题的错误消息。

  

来源' TwitterService'未在日志' TwitterLog'中注册。 (它   已在log' Application'。)

中注册

关注这篇文章:Event log write error我现在已经启动并正确登录服务了。

但现在它正在登录“应用程序”。记录,并需要行

System.Diagnostics.EventLog.DeleteEventSource("TwitterService");

在检查之前,它是为了启动而存在。

如何更改/设置TwitterService Source的注册位置?

我从未在任何地方注册过Original(MySource / MyNewLog)。

EDIT2:

这篇文章解释说需要重新启动才能让它在正确的位置登录。 Windows Event Log - how to register an event source? - 现在正在发挥作用。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

  

我只能猜测注册表包含对服务名称和日志文件的某种引用,除非它们匹配,否则不允许它运行,所以我删除了所有引用日志的注册表项。

不可以,您的应用程序必须存在一个事件日志才能写入,并且您的进程必须以管理权限运行才能创建事件日志。

如果您在网站的搜索引擎中输入实际的异常文本(在您的问题中有用),您将找到非常有用的答案。

答案 1 :(得分:0)

如果您使用示例的事件源名称运行一次服务,请先卸载旧服务。之后,更改源名称并重新安装您的服务。这应该够了吧。

另外,请务必在EventLogInstaller组件中更改它们(如果您正在使用)。