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

0

この方法で EventSource を作成する必要があります。

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

ソース - 「MyServices」

logName - プログラム名の一部。

この方法で必要なデータを挿入します。

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