我試圖使用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)
我在LINQPad安裝前試圖運行EventLog.DeleteEventSource("BillsTestService");
;成功,但後續服務安裝仍然失敗。
我log4net的Appender的配置是:
<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>
我在做什麼錯?
意圖是將多個服務日誌錯誤記錄到相同的日誌名稱(使用不同的應用程序名稱);日誌將由操作創建。
不檢查它是否已經存在嗎? –
@TonyHopkinson我沒有編寫任何代碼來創建EventLog源代碼。這些都在Topshelf和/或log4net庫中。 – TrueWill
看到這個主題:https://groups.google.com/forum/#!topic/topshelf-discuss/-4xfRS0uz-8 –