0

在项目安装程序中,我正在创建一个自定义事件日志。但是当我的服务启动时,我的所有日​​志都将转到“应用程序”而不是我的自定义日志。以下是我添加到安装程序的代码。

// Create Event Source and Event Log     
EventLogInstaller logInstaller = new EventLogInstaller();
logInstaller.Source = "MyServices";
logInstaller.Log = "MyService Events";

Installers.Add(logInstaller);

此外,服务的名称是 MyService.exe。

当我卸载并重新安装服务时,安装失败并显示以下安装日志;

运行事务安装。

开始安装的安装阶段。查看 D:\MyService\MyService\bin\Release\MyService.exe 程序集进度的日志文件内容。该文件位于 D:\MyService\MyService\bin\Release\MyService.InstallLog。

安装阶段发生异常。System.ArgumentException:源 MyServices 已存在于本地计算机上。

安装的回滚阶段即将开始。查看 D:\MyService\MyService\bin\Release\MyService.exe 程序集进度的日志文件内容。该文件位于 D:\MyService\MyService\bin\Release\MyService.InstallLog。

回滚阶段成功完成。

事务安装已完成。

这就是我写日志条目的方式;

EventLog.WriteEntry("MyServices", logMessage, logType);

有人可以帮助我我做错了什么。

4

2 回答 2

1

我有一个类似的问题并通过以下方式解决了它:

  1. 停止当前服务。
  2. 关闭任务管理器、服务管理工具和 Windows 事件查看器。
  3. 使用 intallutil.exe /u 卸载当前服务。
  4. 删除当前服务的事件日志注册表项。(这很重要!) (\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\yourCurrentLogName) 您可以找到您当前的日志,您可以在 Windows 事件查看器下确认您的删除。
  5. 使用 installutil.exe 再次安装服务。
  6. 重新启动 Windows。(这也很重要!)我不确定是否有必要。但是即使我注销了,我也不断收到错误消息。自从我重新启动Windows以来,一切都很好。(也许 AWS 缓存了一些东西?)
于 2021-04-27T00:05:05.087 回答
0

需要这样创建一个EventSource:

if (!EventLog.SourceExists(source))
{
  var eventSourceData = new EventSourceCreationData(source, logName);
  EventLog.CreateEventSource(eventSourceData);
}

来源 - “我的服务”

logName - 你的一些程序名称。

插入数据需要这样:

log = new EventLog();
log.Source = "MyServices";
log.WriteEntry(message, entryType);
于 2015-09-22T16:08:25.963 回答