2

我使用以下方法创建了一个事件日志源:

if (!EventLog.SourceExists(EventLogSource)) EventLog.CreateEventSource(EventLogSource);

因此,使用 EventLogSource 的每个日志条目都会进入“应用程序”。然后我希望所有使用 EventLogSource 的条目进入另一个自定义日志;所以我删除了它们,然后使用新的自定义日志创建了源:

try { EventLog.DeleteEventSource(EventLogSource); }
catch { }
try { EventLog.Delete(EventLogName); }
catch { }

...
if (!EventLog.SourceExists(EventLogSource)) EventLog.CreateEventSource(EventLogSource, EventLogName);
while (!EventLog.SourceExists(EventLogSource)) { }

但是当我使用 EventLogSource 登录时,条目仍然会进入“应用程序”而不是 EventLogName。

笔记:

我在评论中写了这个,我认为它有助于更​​好地描述我的问题:在 Windows 事件查看器中,您会看到“Windows 日志”和“应用程序”在其下。树中有另一个名为“应用程序和服务日志”的节点,我想在该节点下创建一个自定义日志。我可以成功地做到这一点。问题是以前注册到“应用程序”的事件源无法从“应用程序”中取消注册并在我自己的“MyCustomLog”中重新注册。

4

1 回答 1

6

Windows 中的事件系统缓存了一些关于源的信息。这意味着如果您删除一个源并重新添加它,它将继续记录到它最初使用的同一日志中。

没有记录的方法可以强制事件系统清除此缓存。我知道的唯一方法是重新启动机器 - 所以你需要删除源,重新启动,然后重新创建源。

于 2012-09-11T09:42:18.827 回答