Я недавно создал службу Windows. Честно говоря, он регистрирует любые ошибки в журнале приложений. У меня есть следующий код, который делает это:
Dim appLog = New System.Diagnostics.EventLog With {.Source = "MyService"}
appLog.WriteEntry(message, EventLogEntryType.Error, transactionID)
У меня также есть следующее в app.config:
<system.diagnostics>
<sources>
<source name="MyService" switchName="DefaultSwitch">
<listeners>
<!--<add name="FileLog"/>-->
<add name="EventLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<!--<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>-->
<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="MyService"/>
</sharedListeners>
</system.diagnostics>
Я ожидаю, что мой код выше должен работать даже без установки свойства Source в EventLog программно, потому что я уже определил источник в файле конфигурации. Но если я удаляю With {.Source = "MyService"}
, тогда я получаю исключение, которое говорит о том, что свойство Source должно быть установлено до вызова метода WriteEntry. Итак, какова цель материала в XML конфигурации?