Loading configuration for System.Diagnostics.TraceSource from an xml file

c#, logging, tracesource

Solution

System.Diagnostics classes look only at application configuration file. E.g. remarks section of SourceSwitch says:

To configure a SourceSwitch, edit the configuration file that corresponds to the name of your application.

If you will look into code, you'll see that internally these classes use static `DiagnosticConfiguration` class which simply gets `system.diagonostics` configuration section from current app.config

BUT you can move `system.diagonostics` configuratin section to separate xml file. Just specify name of file where section will be defined:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics configSource="diagnostics.xml"/>
</configuration>

diagnostics.xml

<system.diagnostics>
  <sources>
    <source name="foo" switchName="bar"
            switchType="System.Diagnostics.SourceSwitch">
      <listeners>
        <add name="console"/>
      </listeners>
    </source>
  </sources>
  <switches>
    <add name="bar" value="Warning"/>
  </switches>
  <sharedListeners>
    <add name="console" 
         type="System.Diagnostics.ConsoleTraceListener" initializeData="false"/>
  </sharedListeners>
  <trace autoflush="true" indentsize="4">
    <listeners>
      <add name="console"/>
    </listeners>
  </trace>
</system.diagnostics>

Problem

In log4net, it is possible to choose between loading the configuration from the `app.config`, or from an arbitrary xml file. Is it possible to load the configuration for `System.Diagnostics.TraceSource` from an arbitrary xml file?

Original source