Topshelf.Log4Net および log4net を使用してカスタム イベント ログにログを記録するように、Topshelf ベースの Windows サービスを構成しようとしています。アプリケーションをコマンド ライン モードで実行すると、これで問題なく動作します。でサービスをインストールしようとするとBillsTestService.exe install
、次のようになります。
INFO Topshelf v3.1.107.0, .NET Framework v4.0.30319.18052
DEBUG Attempting to install 'BillsTestService'
Running a transacted installation.
...
Service BillsTestService has been successfully installed.
Creating EventLog source BillsTestService in log Application...
An exception occurred during the Install phase.
System.ArgumentException: Source BillsTestService already exists on the local computer.
...
at System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData)
EventLog.DeleteEventSource("BillsTestService");
インストールする前にLINQPadで実行してみました。それは成功しますが、その後のサービスのインストールはまだ失敗します。
私のlog4netアペンダー構成は次のとおりです。
<appender name="ErrorEventLogAppender" type="log4net.Appender.EventLogAppender" >
<threshold value="ERROR" />
<logName value="MyCompanyServices" />
<applicationName value="BillsTestService" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %logger - %message%newline" />
</layout>
</appender>
私は何を間違っていますか?
その目的は、複数のサービスがエラーを同じログ名 (異なるアプリケーション名) に記録することです。ログはオペレーションによって作成されます。