C# 更改windows服务中的事件日志

C# 更改windows服务中的事件日志,c#,windows,service,event-log,C#,Windows,Service,Event Log,今天我要写我的第一个windows服务,下面是一个非常有用的演练: 这一切都很好 当我的服务开始工作时,我开始编辑它,以获得我真正的代码,这也很顺利 但是我发现,如果我在下面的代码中更改了事件日志或源的名称,那么服务将无法启动。将其更改回漫游中使用的名称可以使服务重新启动 eventLog1 = new System.Diagnostics.EventLog(); if (!System.Diagnostics.EventLog.SourceExists("TwitterService"))

今天我要写我的第一个windows服务,下面是一个非常有用的演练:

这一切都很好

当我的服务开始工作时,我开始编辑它,以获得我真正的代码,这也很顺利

但是我发现,如果我在下面的代码中更改了事件日志或源的名称,那么服务将无法启动。将其更改回漫游中使用的名称可以使服务重新启动

eventLog1 = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("TwitterService"))
{
    System.Diagnostics.EventLog.CreateEventSource(
    "TwitterService", "TwitterLog");
}
eventLog1.Source = "TwitterService";
eventLog1.Log = "TwitterLog";
我只能猜测注册表包含对服务名称和日志文件的某种引用,除非它们匹配,否则它将不允许运行,因此我删除了所有引用日志的注册表项

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

如何更改日志文件名?不是一个节目停止,但希望它有一些参考服务

干杯

编辑:

多亏了CodeCaster,我找到了有问题的错误消息

源“TwitterService”未在日志“TwitterLog”中注册。(It) 已在日志“应用程序”中注册。)

下面这篇文章:我现在已经得到了正确启动和登录的服务

但是,它现在正在记录到“应用程序”日志,并且需要该行

System.Diagnostics.EventLog.DeleteEventSource("TwitterService");
在检查它是否存在以便启动之前

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

我从未在任何地方注册过原始文件(MySource/MyNewLog)

编辑2:

这篇文章解释说,需要重新启动才能让它登录到正确的位置。 -现在它开始工作了


感谢您的帮助

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

另外,还要确保在
EventLogInstaller
组件中更改它们(如果您正在使用)

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

否,必须存在事件日志,您的应用程序才能对其进行写入,并且您的进程必须以管理权限运行才能创建事件日志


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

谢谢CodeCaster,异常文本的问题是我没有得到任何异常,因为异常将写入日志。有点像第22条军规。我想我可以把它写在一个文本文件里。。。。。。。我一直在卸载和重新安装任何代码更改之间的服务。我在回答中告诉了您解决方案(即“您需要先使用新名称创建事件源”):)如果您检查应用程序日志,您将看到默认情况下应用程序引发的.NET运行时日志错误,您可以从中找到异常文本。再次感谢Codecaster。我不习惯使用事件日志。我现在发现了错误,并根据事态发展更新了我的问题。标记为答案,因为它包含了我真正需要的信息-即如何找到错误。原始帖子编辑中包含的解决方案