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ではなく「Application」に入ります。

ノート:

私はこれをコメントで書きましたが、私の問題をよりよく説明するのに役立つと思います。Windowsイベントビューアでは、「Windowsログ」が表示され、その下に「アプリケーション」が表示されます。ツリーには、「アプリケーションとサービスのログ」という名前の別のノードがあり、その下にカスタムログを作成します。私はそれをうまくやることができます。問題は、以前に「アプリケーション」に登録されていたイベントソースを「アプリケーション」から登録解除して、自分の「MyCustomLog」に再登録できないことです。

4

1 に答える 1

6

Windowsのイベントシステムは、ソースに関するいくつかの情報をキャッシュします。これは、ソースを削除して再度追加した場合、元々使用していたのと同じログに引き続き記録されることを意味します。

イベントシステムにこのキャッシュを強制的にクリアさせる文書化された方法はありません。私が知っている唯一の方法は、マシンを再起動することです。そのため、ソースを削除して再起動してから、ソースを再作成する必要があります。

于 2012-09-11T09:42:18.827 に答える