не может понять трассировку .net 2010 и app.config

В моем 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, какой переключатель использовать? Как пользователи моего приложения могут изменить файл конфигурации, чтобы разрешить отслеживание или отключить его?

Спасибо.

5
задан wageoghe 12 January 2011 в 18:19
поделиться