В моем app.config я хочу установить 3 уровня трассировки (переключатели?): Подробный, предупреждение и отсутствие. В отладочной версии кода я хочу, чтобы был активен подробный переключатель, в выпуске мне нужно предупреждение. В особых случаях пользователи моего приложения могут изменить файл конфигурации, чтобы отключить все трассировки.
Я хочу, чтобы трассировки отладки выводились на консоль, а трассировки выпуска - только в файл журнала.
Я написал следующее:
[...]
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="debug" switchName="debug">
<listeners>
<add name="FileLog"/>
<add name="console"/>
</listeners>
</source>
<source name="release" switchName="release">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
<source name="silent" switchName="none">
<listeners/>
</source>
</sources>
<switches>
<add name="debug" value="Verbose"/>
<add name="release" value="Warning"/>
<add name="none" value="Off"/>
</switches>
<!--<sharedListeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
</sharedListeners>-->
<trace autoflush="false" indentsize="4">
<listeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false"/>
<remove name="Default"/>
</listeners>
</trace>
</system.diagnostics>
[...]
Затем в коде я вызываю трассировку следующим образом:
Public Shared Sub HandleException(ByVal ex As Exception)
Trace.WriteLine(ex.Message, "Error")
[...]
Думаю, я кое-что упустил. Как сказать методу Trace, какой переключатель использовать? Как пользователи моего приложения могут изменить файл конфигурации, чтобы разрешить отслеживание или отключить его?
Спасибо.