Недавно я создал службу 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"}
, то получу Exception, в котором говорится, что свойство Source должно быть установлено перед вызовом метода WriteEntry. Итак, какова цель содержимого XML конфигурации?